Flask의 SQLAlchemy 사용 자습서
SQLAlchemy 확장 설치 1개
셸 명령에 입력
pip install sqlchemy
설치 성공 여부를 테스트합니다.
import sqlchemy
sqlchemy.__version__ # 0.10.1
오류 메시지가 없으면 설치가 완료되었습니다.
이현식 호출
디스플레이 호출이란 sqlchemy와python class를 조작하지 않고 코드로 직접 완성하는 것입니다.sqlchemy의 상세한 사용에 관하여 다른 블로그를 소개합니다.sqlchemy 사용 강좌를 이동합니다.새 flask 프로젝트를 만듭니다.프로젝트 구조는 다음과 같습니다.
(env)ghost@ghost-H61M-S2V-B3:~/project/flask/fsqlauto$ tree
.
├── app.py
├── database.py
├── models.py
├── static
└── templates
2 directories, 3 files
우리는 먼저 데이터베이스 연결을 정의하고 데이터베이스를 조작합니다.py
# -*- coding: utf-8 -*-
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
from sqlalchemy.ext.declarative import declarative_base
engine = create_engine('sqlite:///./test.db', convert_unicode=True) # ( )
db_session = scoped_session(sessionmaker(autocommit=False,
autoflush=False,
bind=engine))
Base = declarative_base()
Base.query = db_session.query_property()
def init_db():
# ,
# metadata 。 , init_db()
# 。
import models
Base.metadata.create_all(bind=engine)
init_db 방법으로 데이터베이스를 만들고 모델스를 정의합니다.py
# -*- coding: utf-8 -*-
from sqlalchemy import Column, Integer, String
from database import Base
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(50), unique=True)
email = Column(String(120), unique=True)
def __init__(self, name=None, email=None):
self.name = name
self.email = email
def __repr__(self):
return '%s (%r, %r)' % (self.__class__.__name__, self.name, self.email)
python class를 정의했습니다. 실제로는users표에 비추었습니다.마지막으로 저희 프로그램 메인 입구입니다.
# -*- coding: utf-8 -*-
from flask import Flask
from database import init_db, db_session
from models import User
app = Flask(__name__)
@app.teardown_request
def shutdown_session(exception=None):
db_session.remove()
@app.route('/')
def index():
return 'hello world flask'
@app.route('/add/<name>/<email>')
def add(name, email):
u = User(name=name, email=email)
try:
db_session.add(u)
db_session.commit()
except Exception, e:
return 'wrong'
return 'Add %s user successfully' % name
@app.route('/get/<name>')
def get(name):
try:
u = User.query.filter(User.name==name).first()
except Exception, e:
return 'there isnot %s' % name
return 'hello %s' % u.name
if __name__ == '__main__':
init_db()
app.debug = True
app.run()
@app를 정의했습니다.teardown_request 장식기.조회가 끝난 후 데이터베이스를 닫으면 구체적으로flask 문서 데이터베이스를 참고할 수 있습니다.여기 메인 방법 중 initdb는 주로 데이터베이스를 초기화하고 데이터베이스가 존재하면 링크를 통해 읽습니다.dd는 데이터베이스에 기록을 추가하는 방법입니다. get은 바로 데이터베이스 조회입니다. 더 많은 예는 sqlchemy 강좌를 참고하십시오.
3수동 ORM 구현
위쪽은 자동으로 orm을 실현하고 수동이라면 해당하는 파일을 다음과 같이 수정합니다: 데이터베이스.py
# -*- coding: utf-8 -*-
from sqlalchemy import create_engine, MetaData
from sqlalchemy.orm import scoped_session, sessionmaker
engine = create_engine('sqlite:///./test.db', convert_unicode=True)
metadata = MetaData()
db_session = scoped_session(sessionmaker(autocommit=False,
autoflush=False,
bind=engine))
def init_db():
metadata.create_all(bind=engine)
models.py
from sqlalchemy import Table, Column, Integer, String
from sqlalchemy.orm import mapper
from database import metadata, db_session
class User(object):
query = db_session.query_property()
def __init__(self, name=None, email=None):
self.name = name
self.email = email
def __repr__(self):
return '<User %s>' % (self.name)
users = Table('users', metadata,
Column('id', Integer, primary_key=True),
Column('name', String(50), unique=True),
Column('email', String(120), unique=True)
)
mapper(User, users)
모델은 수동으로 테이블을 정의하고 맵을 지정해야 합니다.py
# -*- coding: utf-8 -*-
import sqlite3
from flask import Flask
from database import *
from models import *
app = Flask(__name__)
@app.teardown_request
def teardown_request(exception=None):
db_session.remove()
@app.route('/')
def index():
return 'hello'
@app.route('/add/<name>/<email>')
def add(name, email):
u = User(name, email)
try:
db_session.add(u)
db_session.commit()
except Exception, e:
return 'wrong'
return '%s add successful' % name
@app.route('/get/<name>')
def get(name):
try:
u = User.query.filter(User.name==name).first()
except Exception, e:
return 'there isnot %s' % name
return 'hello %s' % u.name
if __name__ == '__main__':
init_db()
app.debug = True
app.run()
더 밑바닥의 조작은flask app에 sql 조회를 쓰는 것이다. 구체적으로는 sqlalchemy 사용 방법과 일치한다.
제 글이 당신에게 유용하다고 생각되면 마음대로 상을 주십시오.당신의 지지는 제가 계속 창작하도록 격려할 것입니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.