flask 使用 SQLAlchemy 的两种方式

简介:

 

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)
复制代码

 

区别


本文转自罗兵博客园博客,原文链接:http://www.cnblogs.com/hhh5460/p/5529538.html,如需转载请自行联系原作者

相关文章
|
9月前
|
Python
【Flask实战】sqlalchemy和Flask-SQLAlchemy使用对比
【Flask实战】sqlalchemy和Flask-SQLAlchemy使用对比
|
7月前
|
SQL 关系型数据库 MySQL
Flask数据库之SQLAlchemy--介绍--链接数据库
Flask数据库之SQLAlchemy--介绍--链接数据库
|
11月前
|
数据库 数据库管理 Python
一分钟快速实现Flask框架与SQLAlchemy框架的整合
一分钟快速实现Flask框架与SQLAlchemy框架的整合
104 0
|
数据库 Python
Flask学习与项目实战5:通过SQLAlchemy连接数据库进行ORM模型的简单增删改查
是对于数据库的ORM的框架,直接操作模型,安装命令为pip install SQLAlchemy。 SQLAlchemy是一个独立的ORMR框架,可以独立于FLASK存在,也可以在Django中使用。 Flask-SQLAlchemy是对SQLAlchemy的一个封装,更适合在flask使用。
Flask学习与项目实战5:通过SQLAlchemy连接数据库进行ORM模型的简单增删改查
|
存储 SQL 数据库
Flask Web 极简教程(三)- SqlAlchemy(Part A)
Flask Web 极简教程(三)- SqlAlchemy(Part A)
Flask Web 极简教程(三)- SqlAlchemy(Part A)
|
数据库 Python
Python Flask SQLAlchemy上下文介绍
如果您打算仅使用一个应用程序(app),则可以在很大程度上跳过本文。只要将您的应用程序传递给SQLAlchemy 构造函数,就可以设置好了。但是,如果要使用多个应用程序,或者要在要读取的功能中动态创建该应用程序。
216 0
|
数据库 Python
小白学Flask第十二天| flask-sqlalchemy数据库扩展包(二)
小白学Flask第十二天| flask-sqlalchemy数据库扩展包(二)
176 0
小白学Flask第十二天| flask-sqlalchemy数据库扩展包(二)
|
SQL 存储 NoSQL
小白学Flask第十一天| flask-sqlalchemy数据库扩展包(一)
小白学Flask第十一天| flask-sqlalchemy数据库扩展包(一)
241 0
小白学Flask第十一天| flask-sqlalchemy数据库扩展包(一)
|
数据库 Python
Flask架站基础篇(八)--SQLAlchemy(2)
Flask架站基础篇(八)--SQLAlchemy(2)
155 0
|
数据库 Python
Flask架站基础篇(七)--SQLAlchemy(1)
Flask架站基础篇(七)--SQLAlchemy(1)
130 0