1. 使用 flask-SQLAlchemy 扩展
# flask-ext-sqlalchemy.py
from flask
import Flask
from flask.ext.sqlalchemy
import SQLAlchemy
app = Flask(
__name__)
app.config['SQLALCHEMY_DATABASE_URI'] =
'sqlite://'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] =
True
db =
SQLAlchemy(app)
# 定义ORM
class User(db.Model):
id = db.Column(db.Integer, primary_key=
True)
name = db.Column(db.String(80), unique=
True)
email = db.Column(db.String(120), unique=
True)
def __init__(self, name, email):
self.name =
name
self.email =
email
def __repr__(self):
return '<User %r>' %
self.name
# 创建表格、插入数据
@app.before_first_request
def setup():
# Recreate database each time for demo
db.create_all()
admin = User(
'admin',
'admin@example.com')
db.session.add(admin)
guestes = [User(
'guest1',
'guest1@example.com'),
User('guest2',
'guest2@example.com'),
User('guest3',
'guest3@example.com'),
User('guest4',
'guest4@example.com')]
db.session.add_all(guestes)
db.session.commit()
# 查询
@app.route('/user')
def users():
users =
User.query.all()
return "<br>".join([
"{0}: {1}".format(user.name, user.email)
for user
in users])
# 查询
@app.route('/user/<int:id>')
def user(id):
user = User.query.filter_by(id=
id).one()
return "{0}: {1}".format(user.name, user.email)
# 运行
if __name__ ==
'__main__':
app.run('127.0.0.1', 5000)
2. 使用原生 SQLAlchemy
# flask-pure-sqlalchemy.py
from flask
import Flask
from sqlalchemy
import Column, Integer, String
from sqlalchemy
import create_engine
from sqlalchemy.orm
import Session
from sqlalchemy.ext.declarative
import declarative_base
app = Flask(
__name__)
Base =
declarative_base()# 定义ORM
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 '<User %r>' %
(self.name)
# 创建表格、插入数据
@app.before_first_request
def setup():
# Recreate database each time for demo
engine = create_engine(
'sqlite://', echo=
True)
global session
session =
Session(engine)
Base.metadata.drop_all(bind=
engine)
Base.metadata.create_all(bind=
engine)
admin = User(
'admin',
'admin@example.com')
session.add(admin)
guestes = [User(
'guest1',
'guest1@example.com'),
User('guest2',
'guest2@example.com'),
User('guest3',
'guest3@example.com'),
User('guest4',
'guest4@example.com')]
session.add_all(guestes)
session.commit()
# 查询
@app.route('/user')
def users():
users =
session.query(User).all()
return "<br>".join([
"{0}: {1}".format(user.name, user.email)
for user
in users])
@app.route('/user/<int:id>')
def user(id):
user = session.query(User).filter(User.id ==
id).one()
return "{0}: {1}".format(user.name, user.email)
if __name__ ==
'__main__':
app.run('127.0.0.1', 5000
)
区别
转载于:https://www.cnblogs.com/hhh5460/p/5529538.html
相关资源:Python-flaskalchemy基于SQLAlchemy的declarativebase