结合SQLAlchemy联通数据库
安装flask_sqlalchemy和mysqlclient【不知道为啥要安装mysqlclient,老师说装不了就用pymysql】
mysql驱动
mysql驱动默认是mysqlclient的SQLALCHEMY_DATABASE_URI的值为”数据库类型+数据库驱动://用户名:密码@host:port/db_name”app.config['SQLALCHEMY_DATABASE_URI'] = "mysql://xx:123456@xxxx/mysql"
如果直接写数据库的信息在核心文件中,并且没有安装mysqlclient和pymysql的话。会报错:No Module named MySQLdb
绑定app
两种方法使用场景不一样,init_app可以相对来说引入文件不会那么复杂。
方法一 init_app
falsk_sqlalchemy的init_app方法可以绑定到app中
db = SQLAlchemy()
db.init_app(app)
方法二 构造函数
db = SQLalchemy(app)
Flask通过Model访问数据库,即ORM
在根目录下创建一个common文件夹,在common文件夹下创建一个models文件夹,在models下创建一个user的py文件。
user.py
from application import dbclass User(db.Model):Host = db.Column(db.String(80),primary_key = True)User = db.Column(db.String(120))
然后回到blueprint.py 把手动写sql的操作改一下。
from common.models.user import User@index_page.route('/db_select')def db_select():context = {}# sql = text("select * from `user`")# result = db.engine.execute(sql)result = User.query.all()context['result'] = resultreturn render_template("db_data.html",**context)
然后再访问这个页面:
数据查询
对于这里的User.query.all()返回的结果,是model对象的 __repr__ 函数决定的。
否则默认返回的是
