一、问题背景
在使用flask连接数据库时,下载flask_sqlalchemy后,继续下载mysqlclient,因为mysqlclient兼容性较差,并且要兼容python2和python3,,所以运行时报错NameError: name '_mysql' is not defined,如截图
image.png
二、解决方案(两种)
方案一
导入pymysql,并通过install_as_MySQLdb()方法处理即可
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import pymysql
pymysql.install_as_MySQLdb()
方案二
数据库连接地址中通过数据库+pymysql方式
app.config["SQLALCHEMY_DATABASE_URI"] = 'mysql+pymysql://root:1234@127.0.0.1/test38'
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import pymysql
pymysql.install_as_MySQLdb()
# 兼容py2和py3的数据库模块
"""
解决方案1
pymysql.install_as_MySQLdb()
解决方案2
app.config["SQLALCHEMY_DATABASE_URI"] = 'mysql+pymysql://root:Hello1234@127.0.0.1/test38'
"""
app = Flask(__name__)
#1.在app对象中天剑数据库连接配置信息
# 数据库连接地址
app.config["SQLALCHEMY_DATABASE_URI"] = 'mysql://root:Hello1234@127.0.0.1/test38'
# 关闭数据库修改跟踪操作【优化性能】
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
# 输出底层执行的sql语句
app.config["SQLALCHEMY_ECHO"] = True
#2.创建数据库库对象 --绑定应用对象
db = SQLAlchemy(app)
print(db)
#3.自定义模型类
#4.根据模型类,创建所有的表结构
@app.route('/')
def index():
return "index page"
if __name__ == '__main__':
app.run(debug=True)
网友评论