Flask-SQLAlchemy拓展

使用Flask-SQLAichemy可以处理Python对象,而不是数据实体

安装方法:

  • 通过PyCharm的project interpret 继续安装
  • 通过命令行进行安装
install

在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对象,包含指定范围内的结果