Python Flask Tutorial #4 - Database with Flask-SQLAlchemy
https://youtu.be/cYWiDiIUxQc?list=PL-osiE80TeTs4UjLw5MM6OjgkjFeUxCYH
Flask-SQLAlchemy에 대해서 배웁니다.
https://flask-sqlalchemy.palletsprojects.com/en/2.x/
SQLAlchemy는 여러가지 데이타베이스를 지원합니다.
https://docs.sqlalchemy.org/en/13/core/engines.html
PostgreSQL
MySQL
Oracle
Microsoft SQL Server
SQLite
몽고 DB는 별도로 지원합니다. https://pythonhosted.org/Flask-MongoAlchemy/
```
pipenv install flask-sqlalchemy
```
> pipfile에 제대로 등록되어 있는지 체크하세요
```
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(20), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
image_file = db.Column(db.String(20), nullable=False, default='default.jpg')
password = db.Column(db.String(60), nullable=False)
posts = db.relationship('Post', backref='author', lazy=True)
def __repr__(self):
return f"User('{self.username}', '{self.email}', '{self.image_file}')"
class Post(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100), nullable=False)
date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
content = db.Column(db.Text, nullable=False)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
def __repr__(self):
return f"Post('{self.title}', '{self.date_posted}')"
```
현재 디렉토리에 site.db라는 sqlite파일이 만들어집니다.
테이블은 2개 user, post
https://sqlitebrowser.org/ 로 확인해보면

python을 실행해서 Command라인에서 바로 입력해서 확인하니 좋네요..
user와 post의 관계는 one to many 관계입니다.
User 는 many Post를 가질수 있고, Post는 one User만 있게 됩니다.
https://www.youtube.com/watch?v=juPQ04_twtA
Relationship에서 lazy 옵션이 있는데, 이것에 대한 설명
게시판 목록
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 121 | 1년 전 | 632 | ||
| 120 | 1년 전 | 453 | ||
| 119 | 1년 전 | 467 | ||
| 118 | 2년 전 | 463 | ||
| 117 | 2년 전 | 708 | ||
| 116 | 2년 전 | 508 | ||
| 115 | 2년 전 | 865 | ||
| 114 | 2년 전 | 648 | ||
| 113 | 2년 전 | 593 | ||
| 112 | 2년 전 | 875 | ||
| 111 | 2년 전 | 809 | ||
| 110 | 2년 전 | 700 | ||
| 109 | 3년 전 | 920 | ||
| 108 | 3년 전 | 975 | ||
| 107 | 3년 전 | 1092 | ||
| 106 |
|
3년 전 | 1069 | |
| 105 | 3년 전 | 1024 | ||
| 104 | 3년 전 | 1210 | ||
| 103 | 3년 전 | 1157 | ||
| 102 | 3년 전 | 1424 | ||
| 101 |
|
4년 전 | 1218 | |
| 100 |
|
4년 전 | 2455 | |
| 99 | 4년 전 | 1176 | ||
| 98 | 4년 전 | 992 | ||
| 97 | 4년 전 | 1144 | ||
| 96 |
지파스써글
|
4년 전 | 1580 | |
| 95 | 4년 전 | 1507 | ||
| 94 | 4년 전 | 1323 | ||
| 93 | 4년 전 | 1454 | ||
| 92 | 4년 전 | 1421 |

댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기