flask连接mysql数据库
1.首先导入Flask_sqlalchemy的包,
没有的需要先在环境中安装包:
pip install flask-sqlalchemy
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import text
2通过app.config方法来配置数据库相关的信息
# mysql主机名
HOSTNAME = "127.0.0.1"
# 端口号
PORT = 3306
# 账号
USERNAME = "root"
# 密码
PASSWORD = 1234
# 数据库名
DATABASE = "database_learn"
# 创建flask对象
app = Flask(__name__)
# 配置连接
app.config['SQLALCHEMY_DATABASE_URI'] = f'mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8mb64'
# 获取连接对象
db = SQLAlchemy(app)
3.测试连接
with app.app_context():
with db.engine.connect() as conn:
rs = conn.execute(text("select 1"))
print(rs.fetchone())
常见问题:
- 1.app.app_context()需要在上下文中运行
- 2.sqlalchemy.exc.ObjectNotExecutableError: Not an executable object: ‘select 1’ 要使用text(“select 1”)方法
全部连接代码:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import text
# mysql主机名
HOSTNAME = "127.0.0.1"
# 端口号
PORT = 3306
# 账号
USERNAME = "root"
# 密码
PASSWORD = 1234
# 数据库名
DATABASE = "database_learn"
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = f'mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8'
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():
return "hello"
# flask 直接在代码里面创建表
# 当前文件做为主入口运行
if __name__ == '__main__':
app.run()
测试结果:
(1,)