목차
[Python] flask와 sqlite 연동 검색 기본 준비
앞서 시간에는 flask와 sqlite를 연동(Connect)해서 flask의 웹서버를 가동해서 웹 브라우져(web browser)에서 sqlite의 데이터베이스(DB, Database)에 있는 내용을 모두 읽어 오는 예제를 시행해 보았습니다(https://scribblinganything.tistory.com/619). 동일 내용을 라즈베리파이(Raspberry Pi) 리눅스 환경에서도 시행한 예제가 있으니 궁금하시면 참조 하세요
이번 포스트에서는 REST API 를 중에 GET 을 사용해서 웹 페이지(Web Page)에 특정 id 값을 입력 하고 해당 id에 해당하는 데이터 베이스 값을 검색(Search) 하고 이를 페이지에 출력하는 예제 입니다.
혹시 REST API에 대한 내용을 잘 모르 신다면 링크를 참조 하세요(https://scribblinganything.tistory.com/162)
기본 구조는 앞서 윈도우 파이썬에서 실행한 코드와 동일 합니다. 다만 메인 파이썬 코드에서 sql_search(id)라는 함수만 추가 하였습니다. 전체 코드는 아래와 같습니다.
현재 SQLite DB에 저장된 값>>
sql_read.html>>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>sql_read</title>
</head>
<body>
<table border="1">
<tr>
<th>ID</th>
<th>이름</th>
<th>주소</th>
</tr>
{% for item in items %}
<tr>
<td>{{ item.id }}</td>
<td>{{ item.name }}</td>
<td>{{ item.addr }}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
메인 파이썬 코드>>
from flask import Flask, render_template, abort, jsonify
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///D:\\Python\\test04\\company.db'
# app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////home/fam/linux_test/flask_test/company.db'
db = SQLAlchemy(app)
class employee(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String, unique=True, nullable=False)
addr = db.Column(db.String)
def __init__(self, id=1, name=None, addr=None):
self.id = id
self.name = name
self.addr = addr
def __repr__(self):
return '<%r, %r>' % (self.name,self.addr)
@app.route('/sql_search/<id>')
def sql_search(id):
db_value = db.session.execute("SELECT * from employee where id like "+"'%"+id+"%'").fetchall()
if db_value:
return render_template('sql_read.html', items=db_value)
return abort(404, "no database")
@app.route('/sql_read')
def sql_read():
db_value = db.session.query(employee).all()
if db_value:
return render_template('sql_read.html', items=db_value)
return abort(404, "no database")
@app.route('/')
def hello_fnc():
return "Hello"
if __name__ == "__main__":
app.run(host='0.0.0.0', debug=True, port=9999)
[Python] flask와 sqlite 연동 검색 예제 실습 및 분석
html이나 DB에 대해서는 앞에서 이미 소개를 하였기 때문에 파이썬(Python) 코드 중에 sql_read 부분에 대한 설명만 추가하겠습니다.
@app.route('/sql_search/<id>')
def sql_search(id):
db_value = db.session.execute("SELECT * from employee where id like "+"'%"+id+"%'").fetchall()
if db_value:
return render_template('sql_read.html', items=db_value)
return abort(404, "no database")
1번 라인: <id> 값을 사용해서 웹 주소를 입력과 함께 id 값이 넘어가게 됩니다. 해당 구문은 GET으로 전달 됩니다.
2번 라인: id 값을 sql_search 함수로 넘겨 줍니다.
3번 라인: SQLite 의 where 명령어를 사용해서 해당 id 내용을 찾아 줍니다.
결과>>
정상적으로 2번 id에 대한 값을 출력 하였습니다.
'데이터베이스(db) > SQLite' 카테고리의 다른 글
[Python] flask와 sqlite 연동, 웹에 글 쓰고 데이터베이스에 넣기(GET, POST, form) (0) | 2022.11.09 |
---|---|
[Python]flask와 sqlite(데이터베이스) 연결하고 웹화면에 띄우기 (0) | 2022.11.04 |
[Python] Sqlalchemy로 데이터베이스 읽기, 조건문 설정하기 (0) | 2022.10.21 |
[Python] SQLAlchemcy란? 테이블 생성, 데이터 입력(SQLite, ORM) (0) | 2022.10.19 |
[Python] SQLite, CSV 쓰고 읽기, DB에 옮기기 (0) | 2022.09.27 |