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