之前我们讲了许多关于sqlalchemy的文章,今天就为大家讲讲flask_sqlalchemy的使用!在使用flask_sqlalchemy之前,请确保安装了flask_sqlalchemy,安装代码:
pip install flask_sqlalchemy
flask_sqlalchemy用法与sqlalchemy类似,两者主要区别是sqlalchemy独立于flask使用。
首先,我们先创建一个flask项目,并命名为 flask_sqlalchemy_demo
创建完flask项目后,它会自动生成如下代码
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
接着,我们从flask_sqlalchemy中导入SQLAlchemy并实例化,代码如下(注意:导入的SQLAlchemy跟我们之前讲的sqlalchemy不一样,我们现在导入的SQLAlchemy是一个类,之前所讲的sqlalchemy是一个包)
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy(app)
实力化db对象后,我们再创建一个User模型,在创建User模型前,我们要先做好数据库相关配置,不然flask项目怎么与数据库相连?是吧!我们就先做好数据库配置,代码如下:
DIALCT = "mysql"
DRIVER = "pymysql"
USERNAME = "root"
PASSWORD = "admin"
HOST = "127.0.0.1"
PORT = "3306"
DATABASE = "flask_sqlalchmy_demo"
DB_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALCT,DRIVER,USERNAME,PASSWORD,HOST,PORT,DATABASE)
app.config["SQLALCHEMY_DATABASE_URI"] = DB_URI
数据库连接和sqlalchemy连接数据库代码一样,定义好数据库连接后,我们就可以定义模型了(注意:模型继承的类是db.Model,而不是Base,数据类型及列属性不用从sqlalchemy导入,直接从db导入即可),代码如下:
class User(db.Model):
__tablename__ = "user"
id = db.Column(db.Integer , primary_key=True , autoincrement=True)
name = db.Column(db.String(50) , nullable=False)
创建模型后,我们让它映射到数据库中,之前我们用sqlalchemy是Base.create_all(),现在我们用flask_sqlalchemy,其代码如下:
db.create_all()
运行创建数据库代码,然后 show tables查看是否映射到数据库中。运行代码截图如下:
OK,数据表已成功映射到数据库中,下面我们再讲讲flask_sqlalchemy简单增删查改操作,因为我之前讲过关于sqlalchemy数据操作的文章《使用sqlalchemy对数据库表进行增删查改操作》!
添加数据
user1 = User(name = "jack")
user2 = User(name = "bob")
db.session.add_all([user1,user2])
db.session.commit()
结果如下:
查询数据
results = User.query.all()
print(results)
结果如下
修改数据(将name为jack修改成blue)
result = User.query.filter(User.name == "jack").first()
result.name = "blue"
db.session.commit()
结果如下
删除数据(将name为bob的数据删除)
result = User.query.filter(User.name == "bob").first()
db.session.delete(result)
db.session.commit()
结果如下