赞
踩
Flask-SQLAlchemy的使用是对SQLAlchemy进行了封装和优化:
pip install flask-sqlalchemy
数据库初始化不再是通过create_engine。
app.config["SQLALCHEMY_DATABASE_URI"] = DB_URI
db = SQLAlchemy(app)
之前都是通过Base = declarative_base()来初始化一个基类,然后再继承,在Flask-SQLAlchemy中更加简单了。
from flask_sqlalchemy import SQLAlchemy
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
代码:
#2、创建模型类
class User(db.Model): #db.Model:固定的写法
__tablename__='t_user'
id=db.Column(db.Integer,primary_key=True,autoincrement=True)
uname=db.Column(db.String(50))
pwd=db.Column(db.String(50))
def __repr__(self):
return f'用户名:{self.uname}~~密码:{self.pwd}'
写完模型类后,要将模型映射到数据库的表中,使用以下代码即可
执行代码:数据表创建成功
db.create_all()
但是启动项目会出现一个警告
解决方法是:添加一行代码:
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
以后session也不需要使用sessionmaker来创建了,
直接使用db.session就可以了,
操作这个session的时候就跟之前的sqlalchemy的session是一样一样的。
添加数据和之前的没有区别,只是session成为了一个db的属性
@app.route('/create')
def create():
name=request.args.get('name')
pwd=request.args.get('pwd')
print(name,pwd)
#插入到数据库表t_user中
user=User(uname=name,pwd=pwd)
db.session.add(user)
db.session.commit()
return '添加成功'
1.单表查询
查询数据不再是之前的session.query方法了,而是将query属性放在了db.Model上,所以查询就是通过“模型名.query”的方式进行查询了,query就跟之前的sqlalchemy中的query方法是一样用的。
2.多表查询
如果查找数据涉及多个模型,只能使用db.session.query(模型名).all() 这种方式
@app.route('/query')
def query():
id=request.args.get('id')
user=db.session.query(User).filter(User.id==id).first()
print(user)
return "查询成功,查到的用户名是{}".format(user.uname)
修改数据和之前的没有区别,只是session成为了一个db的属性
@app.route('/update')
def update():
id=request.args.get('id')
name=request.args.get('name')
pwd=request.args.get('pwd')
#获取id=id的数据
res=db.session.query(User).filter(User.id==id).first()
print(res)
res.uname=name
res.pwd=pwd
db.session.add(res)
db.session.commit()
return "修改成功"
删除数据跟添加数据和修改数据类似,只不过session是db的一个属性而已
@app.route('/delete')
def delete_user():
name=request.args.get('name')
user=User.query.filter(User.uname==name).first()
if user:
db.session.delete(user)
db.session.commit()
return "删除成功"
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。