Knowledge Map

create_db using sqlalchemy 본문

PYTHON

create_db using sqlalchemy

2018. 5. 9. 22:36

DB로 여러가지를 쓰지만 sqlite3의 경우 파일 형태로 만들어지다 보니, 그 간편함 떄문에 여럿 쓴다.

sqlite3에서 db 생성하는 방법 중에 sqlalchemy를 이용하면 간단히 만들수 있다.


먼저 아래와 같이 각각 app.py를 만들어준다. (model.py 코드도 같이 들어가 있다.)

from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db' db = SQLAlchemy(app) db.init_app(app) # 이건 db = SQLAlchemy()를 한 상황에서만 해준다. class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True, nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) def __repr__(self): return '<User %r>' % self.username



그리고 해당 app.py에서 db를 import 한 다음에 db.create_all() 를 하면 된다.

from yourapplication import db
>>> db.create_all()


여기서 app.config["SQLALCHEMY_DATABASE_URI"] 설정을 꼭 해줘야 한다.

그리고 보통 model.py로 분리해서 쓰고, model.py안에서 db = SQLAlchemy() 이런식으로 사용을 했었다면 app.py에서db.init_app(app) 이런식으로 해당 앱에 대해서 초기화를 해줘야 한다. 그러지 않으면 db.create_all()을 했을 때 


AssertionError: The sqlalchemy extension was not registered to the current application.  Please make sure to call init_app() first.


이런식으로 에러가 뜬다.


출처 : http://flask-sqlalchemy.pocoo.org/2.3/quickstart/


그외 context에 관련된 내용들


http://flask-sqlalchemy.pocoo.org/2.3/contexts/

http://flask.pocoo.org/docs/1.0/appcontext/#creating-an-application-context

'PYTHON' 카테고리의 다른 글

celery 관련  (0) 2018.06.11
import _macosx 에서의 runtimeError  (0) 2018.06.01
SQLAlchemy session transaction delete 문제  (0) 2018.04.12
RuntimeWarning tensolrflow does not match runtime version 3.6  (0) 2018.01.19
python3 bytes class => json  (0) 2018.01.16
Comments