목차
[라즈베리파이] flask와 sqlite 연동해서 데이터베이스 값 웹 출력
앞서 라즈베리파이(Raspberry Pi)를 통해 웹서버를 운용했고 flask를 사용해서 웹브라우져(Web Browser)로 확인해보았습니다. 이번 시간에는 SQLite 데이터베이스(DB, Database)를 사용해서 테이블의 값을 읽어서 웹 하면에 출력하는 예제를 실행해 보겠습니다.
사실 이번 내용은 이미 윈도우 환경(Window OS)에서 구현해보고 실행도 해보았습니다(https://scribblinganything.tistory.com/619). 아무래도 라즈베리파이(Raspberry Pi)에서 구현하고 실행하는 것은 윈도우에 비하면 불편하기 때문에 윈도우에서 먼저 검증을 하고 확인하는 작업을 라즈베리파이(Raspberry Pi)에서 가져 갔기 때문에 구현에 대한 상세 내용은 위쪽 링크를 통해서 확인하시면 됩니다.
이번 포스트는 이전에 구현한 코드를 라즈베리 파이로 옮기고 경로에 대한 설정만을 진행하고 결과를 출력하는 것에 중점을 맞추겠습니다.
[라즈베리파이] flask와 sqlite 연동해서 데이터베이스 값 웹 출력 구현하기
우선 해당 예제를 구현하기 위해서 아래의 3개의 파일이 필요 합니다.
1. sql_read.html : 읽은 DB 값을 출력할 페이지
2. company.db : DB 데이터가 들어가 있는 db 파일
3. test00.py : flask와 sqlalchemy 를 실행할 파이썬(Python) 코드
1. 위 3개 파일을 라즈베리파이로 옮깁니다. 저는 VPN Viewer를 사용해서 옮겼습니다. 아래 그림과 같이 db파일과 파이썬(Python) 코드는 해당 경로에 옮깁니다. 그리고 html 파일은 templates 폴더에 넣습니다.
2. 파이썬 코드는 아래와 같습니다.
from flask import Flask, render_template, abort
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
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_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, "페이지가 없습니다")
@app.route('/')
def hello_fnc():
return "Hello"
if __name__ == "__main__":
app.run(host='0.0.0.0', debug=True, port=9999)
3. 기존의 코드에서 DB 경로는 아래와 같이 현재 DB 파일이 있는 위치로 설정합니다.
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////home/fam/linux_test/flask_test/company.db'
4. 아래와 같이 파이썬 코드를 실행합니다.
python3 test00.py
5. 동일 와이파이에 연결된 다른 PC의 web browser에서 아래와 같이 입력 합니다.
http://192.168.0.190:9999/
결과>>
6. sql_read 페이지를 아래와 같이 확인합니다.
http://192.168.0.190:9999/sql_read
정상적으로 웹서버와 flask와 데이터베이스가 동작함을 확인하였습니다.
'라즈베리파이(Raspberrypi)' 카테고리의 다른 글
[라즈베리파이] Polling과 Interrupt로 입력 신호 받기(폴링, 인터럽트) (0) | 2022.12.23 |
---|---|
[라즈베리파이] GPIO란? LED 켜기&끄기, 핀맵(Pinmap, Pinout) (0) | 2022.12.22 |
[라즈베리파이] flask 기본 웹 서버 실행하기(외부에서 접속해보기) (0) | 2022.10.29 |
CGI란? 간단한 예제 리눅스 라즈베리파이에서 실행하기(파이썬, Python, linux, rasberrypi) (0) | 2022.09.06 |
[라즈베리파이] 웹 서버(Web Server)란? 아파치(Apache) 설치 및 실행하기 (0) | 2022.08.29 |