Flask-SQLAlchemy拓展
使用Flask-SQLAichemy可以处理Python对象,而不是数据实体
安装方法:
- 通过PyCharm的project interpret 继续安装
- 通过命令行进行安装
pip install flask-sqlalchemy
在Flask-SQLAlchemy中,数据库使用URL进行指定,MySQL的URL格式为:
mysql://username:password@hostname/datebase
例如 mysql://root:password@127.0.0.1:3306/demoDatabse
安装pymysql
pip install pymysql
配置数据库:
from flask_sqlalchemy import SQLAlchemy
app.config['SQLALCHEMY_DATABASE_URI']= 'mysql+pymysql://root:password@127.0.0.1:3306/Demo'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
创建数据库类,映射数据库表
class ClassInfo(db.Model):
__tablename__ = 'classinfo'
id = db.Column(db.Integer(), primary_key=True)
className = db.Column(db.String(20))
classSize = db.Column(db.Integer())
注意,其中的类型的第一个字母要大写
在视图中操作数据库查询
通过数据库类的query对象中的方法进行查询
mylist = ClassInfo.query.all()
print(mylist)
for it in mylist:
print(it)
test = mylist[0].className
return render_template('demo3.html', html_form=login_form, test=test)
常用的SQLAlchemy查询过滤器
过滤器 | 说明 |
---|---|
filter() | 把过滤器添加到原查询上,返回一个新查询 |
filter_by() | 把等值过滤器添加到原查询上,返回一个新查询 |
limit() | 使用指定的值限制原查询返回的结果数量,返回一个新查询 |
offset() | 偏移原查询返回的结果,返回一个新查询 |
order_by() | 根据指定条件对原查询进行排序,返回一个新查询 |
group_by() | 根据指定调教对原查询结果进行分组,返回一个新查询 |
常用SQLAlchemy查询执行方法
方法 | 说明 |
---|---|
all() | 以列表形式返回查询的所有结果 |
first() | 返回查询的第一个结果,如果没有结果,则返回None |
first_or_404() | 返回查询的第一个结果,如果没有结果,则终止请求,返回4040错误响应 |
get() | 返回指定主键对应的行,如果没有对应的行,则返回NOne |
get_or_404 | 返回指定主键对应的行,如果没找到指定的主键,则终止请求,返回404错误响应 |
count() | 返回查询结果的数量 |
paginate() | 返回一个Paginate对象,包含指定范围内的结果 |