下载驱动包pymysql,在终端使用命令安装,安装命令如下
pip install pymysql
安装flask_sqlalchemy包,使得flask在使用sqlalchemy时更加方便
pip install flask-sqlalchemy
新建flask项目,在app.py中编写
导入模块SQLAlchemy
from flask_sqlalchemy import SQLAlchemy
创建SQLAlchemy实例对象,命名为db,将flask的实例对象app作为参数传给SQLAlchemy,将db和app联系起来,可以调用其相关功能
db = SQLAlchemy(app)
# MySQL所在主机名,默认127.0.0.1 HOSTNAME = "127.0.0.1" # MySQL监听的端口号,默认3306 PORT = 3306 # 连接MySQL的用户名,自己设置 USERNAME = "root" # 连接MySQL的密码,自己设置 PASSWORD = "root" # MySQL上创建的数据库名称 DATABASE = "database_learn" # 通过修改以下代码来操作不同的SQL比写原生SQL简单很多 --》通过ORM可以实现从底层更改使用的SQL app.config['SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8mb4"
使用数据库工具创建数据库并测试连接
with app.app_context(): with db.engine.connect() as conn: result = conn.execute("select 1") print(result.fetchone()) # (1,)
返回(1,),连接成功
完整代码块如下
from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) # MySQL所在主机名 HOSTNAME = "127.0.0.1" # MySQL监听的端口号,默认3306 PORT = 3306 # 连接MySQL的用户名,自己设置 USERNAME = "root" # 连接MySQL的密码,自己设置 PASSWORD = "ding123456" # MySQL上创建的数据库名称 DATABASE = "datebase_learn" # 通过修改以下代码来操作不同的SQL比写原生SQL简单很多 --》通过ORM可以实现从底层更改使用的SQL 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: result = conn.execute("select 1") print(result.fetchone()) # (1,) @app.route('/') def hello_world(): # put application's code here return 'Hello World!' if __name__ == '__main__': app.run()
报错提示:Not an executable object: ‘select 1’
在以下代码提示错误
db=SQLAlchemy(app) with app.app_context(): with db.engine.connect() as conn: result = conn.execute("select 1") print(result.fetchone())
原因:'select 1’不是一个可执行的对象
解决方案:
文本sql的执行,需要使用sqlalchemy中的text()方法处理字符串,再执行语句
1.导入模块
from sqlalchemy import text
2.修改关键代码
将result = conn.execute("select 1")
修改为以下代码
result = conn.execute(text("select 1"))