当前位置: 首页 > 工具软件 > Flask-Select2 > 使用案例 >

在flask框架中使用flask-sqlalchemy

殳睿
2023-12-01

先安装最新版本的flask-sqlalchemy,Flask-SQLAlchemy-2.3.2.tar.gz

我们使用的数据库为MySQL,以MySQL为例在我们的Flask框架中使用SQLAlchemy访问数据。

首先在config.py中配置数据库相关的地址

...

class DevConfig(Config):
    ...
    SQLALCHEMY_DATABASE_URI="mysql+pymysql://username:password@host:port/dbname"
    #SQLALCHEMY_ECHO = True
    SQLALCHEMY_TRACK_MODIFICATIONS = False

app/__init__.py中添加初始化代码

from flask_sqlalchemy import SQLAlchemy // 注意这里加载的方式与Python2不同(from flask.ext.sqlalchemy import SQLAlchemy)

db = SQLAlchemy()

def create_app():
    ...
    db.init_app(app)

app/models.py中实现数据库操作对象

from app import db

class User(db.Model):
    __tablename__ = 'user'
    id = db.Column(db.SmallInteger, nullable=False, primary_key=True, autoincrement=True)
    name = db.Column(db.String(16), nullable=False)

整理一下SQLAlchemy对象的查询方法(未验证)

1)User.query.order_by(User.id)——对应sql的order by方法
2)User.query(User.name).all()——查询特定字段,并返回全部数据
3)User.query(User.name.label('name_label')).all()——对应select a.name as name_label方法
4)User.query.order_by(User.id)[1:3]——限制返回的结果集范围,对应limit?offset?方法
5)User.query.filter_by('name'='ED Jones')——添加指定条件,对应where user.name=?方法
6)User.query.filter(User.name=='ED Jones')——功能同上

@filter_by,filter区别
filter_by直接用属性名,比较用=,filter用类名.属性名,比较用==
filter不支持组合查询,只能连续调用来变相实现


 类似资料: