1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import os
from werkzeug.security import generate_password_hash, check_password_hash
from datetime import datetime
import pandas as pd
 
#create app and db
app = Flask(__name__)
app.config['SECRET_KEY'= 'dlfldhsjfk'
print(os.path.join(os.path.abspath(os.path.dirname(__file__)), "practice.db"))
app.config["SQLALCHEMY_DATABASE_URI"= "postgresql://postgres:password@localhost:5432"
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'= False
db = SQLAlchemy(app)
 
class Users(db.Model):
    __table_name__ = "users"
 
    pk = db.Column(db.BigInteger, primary_key=True, autoincrement=True)
    username = db.Column(db.String(100), nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    password = db.Column(db.String(100), nullable=False)
 
    def __init__(self, username, email, password, **kwargs):
        self.username = username
        self.email = email
        self.password = generate_password_hash(password)
 
    def check_password(self, password):
        return check_password_hash(self.password, password)
 
    def __repr__(self):
        return f"<User('{self.pk}', '{self.username}', '{self.email}')>"
 
@app.route("/")
def hello():
    db.create_all()
    return "db init finish!"
 
@app.route("/<name>-<email>-<password>")
def set_person(name, email, password):
    user = Users(username=name, email=email, password=password)
    db.session.add(user)
    db.session.commit()
    pd.read_sql("select * from users", db)
    print(pd.head())
    return f"User : {name}, {email}, {password} is added"
 
app.run()
 
 
cs

부산대학교 학식에서 원하는 메뉴(소세지 야채 볶음 등) 혹은 원하는 키워드가 등장하면

카카오톡 알림을 주는 토이 프로젝트를 구현하려고 합니다.

기술 스펙은 다음과 같습니다.

-구동사양 : 라즈베리4 4GB

-주 언어 : python

모두들 python에 익숙한 상태여서 러닝커브가 없는 파이썬을 선택하였습니다.

-프레임워크 : Flask

라즈베리파이에서 간단한 웹서버를 돌리기 위해 러닝커브가 적은 Flask를 선택하였습니다.

-데이터베이스 : PostgreSQL

이렇게 간단한 프로젝트는 txt파일로 메뉴를 관리해도 되지만 데이터베이스도 건드려보자! 싶어서 찾아보았습니다.

다양한 데이터베이스가 있었지만 대용량 트랜잭션에도 안정적이라 평가받는 postgreSQL을 선택하였습니다.

한국어로 된 좋은 자료가 없어서(제가 못찾아서...)

https://youtu.be/qw--VYLpxG4

이 자료를 이용하여 공부하였습니다.

쉬운 영어로 제작되어서 듣는데 거북함은 없을거에요^^

- 데이터베이스 연결도구 : sqlalchemy

psycopg2와 sqlalchemy 둘 다 쓸 수 있었지만

판다스를 통해서 데이터베이스를 불러오는 기능 중 read_sql_table을 쓸 수 있는 sqlalchemy를 선택하였습니다.

어차피 둘다 연결도구로만 쓰고 판다스의 read_sql만 사용할 수 있어서

기능이 한개라도 많은 녀석을 사용하는 것이 더 나았습니다.

-기타 : 카카오톡 플러스친구와 챗봇 신청

 

이제부터 쓰는 글은 위 기술 스택을 공부했다는 가정하에 적겠습니다.

+ Recent posts