我在学习flask框架的过程中遇到了第一个问题就是数据库连接的问题,在测试中一直没有结果。
可能是因为如下的问题:
1.我一开始使用的是python3.10以上版本,高版本导致的无法正常连接
在app.config['SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8mb4"中f显示报错,我自行理解就是高版本导致的,后来换成3.9就正常使用
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
HOSTNAME = '127.0.0.1'
PORT = 3306
USERNAME = ''#你的数据库用户名
PASSWORD = ''#你的数据库密码
DATABASE = '' #你的数据库名称
app.config['SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8mb4"
2.flask_sqlalchemy与SQLALchemy版本不兼容,这个问题可以从以下这位作者的操作中修改。
https://blog.csdn.net/qq_40821260/article/details/90273925
3.在测试代码中,我们需要自行添加from sqlalchemy import text
将原有代码
db = SQLAlchemy(app)
with app.app_context():
with db.engine.connect() as conn:
rs = conn.execute("select 1")
print(rs.fetchone())
修改为
db = SQLAlchemy(app)
with app.app_context():
with db.engine.connect() as conn:
rs = conn.execute(text("select 1"))
print(rs.fetchone())
所有源代码如下:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import text
app = Flask(__name__)
HOSTNAME = '127.0.0.1'
PORT = 3306
USERNAME = ''#你的数据库用户名
PASSWORD = ''#你的数据库密码
DATABASE = '' #你的数据库名称
app.config['SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8mb4"
db = SQLAlchemy(app)
with app.app_context():
with db.engine.connect() as conn:
rs = conn.execute(text("select 1"))
print(rs.fetchone())
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
希望这些对于学习flask的人有帮助,感谢你们的观看