您现在的位置是:首页 > 技术教程 正文

【Flask&MySQL】Flask连接数据库MySQL(十)

admin 阅读: 2024-03-20
后台-插件-广告管理-内容页头部广告(手机)

Flask操作数据库MySQL

先自行安装好MySQL。Flask想要操作数据库,必须要先安装Python操作 MySQL 的驱动。在Python中,目前有以下MySQL驱动包

  • MySQL-python:也就是MySQLdb。是对C语言操作 MySQL数据库的一个简单封装。遵循了Python-DB-API v2。但是只支持Python2。
  • mysqlclient:是 MySQL-python的另外一个分支。支持Python3并且修复了一些bug。是目前为止执行效率最高的驱动,但是安装的时候容易因为环境问题出错。
  • pymysql:纯 Python实现的一个驱动。因为是纯 Python编写的,因此执行效率不如 mysqlclient。也正因为是纯 Python写的,因此可以和 Python代码无缝衔接。
  •  mysql-connector-python: MySQL官方推出的纯 Python连接MySQL的驱动,执行效率pymysql还慢。


为了减少出错,提高学习效率,我先选择用pymysql作为驱动程序。在完成本次项目后,如果有需要,可以自行考虑移植到mysqlclient。pymysql是一个第三方包,因此需要通过以下命令安装。

pip install pymysql

 

后面我们使用flask操作数据库,将会使用ORM的方式。

ORM技术的好处?基本上不需要我们自己去写任何的sql语句。

如何实现?借助另外一个包:flask-sqlalchemy

 

sqlalchemy可以提供ORM技术,可以帮助我们像操作普通Python对象一样实现数据库的增删改查。flask-sqlalchemy是对sqlalchemy的一个封装,使得在flask中使用sqlalchemy更加方便。flask-sqlalchemy需要单独安装,因为flask-sqlalchemy依赖aqlalchemy,所以只要安装了flask-sqlalchemy,sqlalchemy就会自动安装。

安装flask-sqlalchemy:

pip install flask-sqlalchemy

Flask连接MySQL

新建一个flask项目,在app.py(入口文件)中编写:

一、创建SQLAlchemy的实例对象

模块flask_sqlalchemy中封装了模块SQLAlchemy的相关用法,我们需要先导入模块SQLAlchemy。

from flask_sqlalchemy import SQLAlchemy

为了使用类SQLAlchemy封装的功能,我们需要创建一个类SQLAlchemy的实例对象,将它命名为db,将flask的实例对象app作为参数传给SQLAlchemy,是为了将db和app联系起来,这样就能调用相关功能了。

db = SQLAlchemy(app)

二、在python中配置数据库信息

在app.config中设置好连接数据库的信息,db对象可以自动读取app.config中连接数据库的信息。注意编辑配置信息时区分大小写。

  1. # MySQL所在主机名
  2. HOSTNAME = "127.0.0.1"
  3. # MySQL监听的端口号,默认3306
  4. PORT = 3306
  5. # 连接MySQL的用户名,自己设置
  6. USERNAME = "root"
  7. # 连接MySQL的密码,自己设置
  8. PASSWORD = "root"
  9. # MySQL上创建的数据库名称
  10. DATABASE = "database_learn"
  11. # 通过修改以下代码来操作不同的SQL比写原生SQL简单很多 --》通过ORM可以实现从底层更改使用的SQL
  12. app.config['SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8mb4"

三、利用数据库开发工具Navicat连接MySQL

1、文件 -->新建连接-->MySQL

 

2、填写信息-->连接测试-->确定

3、新建数据库

 四、测试连接MySQL是否成功

  1. with app.app_context():
  2. with db.engine.connect() as conn:
  3. rs = conn.execute("select 1")
  4. print(rs.fetchone())

返回 (1,),证明连接成功。

完整测试代码如下(navicat信息需要自己先配置好再通过flask去连接):

  1. from flask import Flask
  2. from flask_sqlalchemy import SQLAlchemy
  3. app = Flask(__name__)
  4. HOSTNAME = "127.0.0.1"
  5. PORT = 3306
  6. USERNAME = "root"
  7. PASSWORD = "root"
  8. DATABASE = "database_learn"
  9. app.config['SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8mb4"
  10. db = SQLAlchemy(app)
  11. # 测试是否连接成功
  12. with app.app_context():
  13. with db.engine.connect() as conn:
  14. rs = conn.execute("select 1")
  15. print(rs.fetchone()) # (1,)
  16. if __name__ == '__main__':
  17. app.run()
标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索