结合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 db
class 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'] = result
return render_template("db_data.html",**context)
然后再访问这个页面:
数据查询
对于这里的User.query.all()返回的结果,是model对象的 __repr__
函数决定的。
否则默认返回的是