一、简介
通常,数据库是持久化的最佳方案,几乎每个稍微大一点的系统都会用到数据库,市面上存在各种各样的数据库系统,本文采用一种最常用的数据库系统——MySql。
访问数据库的方式大体上可以分为两种,一种是直接(或间接)基于数据库驱动的类SQL的方式,另外一种在数据库驱动之上更高抽象的ORM方式。pymysql
是采用Python语言编写的MySql数据库驱动,其优点是安装便捷(可以查看源码哦~),缺点是速度没有那么快,但也基本能满足日常需求(对于性能要求比较高的场景,可考虑mysqldb)。sqlalchemy
是高层次的ORM框架,支持多种数据库和多种数据库驱动。sqlacodegen
可以根据已有的数据库生成sqlalchemy的模型文件,避免手工同步数据库和模型。
本文简单介绍pymysql+sqlalchemy+sqlacodegen的联合使用。
一、安装
直接使用pip进行安装即可,命令如下:
1 | pip install pymysql |
二、使用pymysql访问数据库
pymysql使用很简单(请按照实际情况修改数据库信息),如下:
1 | import pymysql |
三、使用sqlalchemy访问数据库
sqlalchemy有两种使用方式,一种是类似于pymysql的方式,另一种是以ORM的方式,如下:
1 | from sqlalchemy import create_engine |
使用ORM方式访问数据库时,需要先定义实体模型,代码如下:
1 | from sqlalchemy import create_engine |
四、使用sqlacodegen生成数据库模型
只维护一个同样的或类似的东西是软件设计的哲学之一,优秀的实体模型是与数据库结构一一对应的,然而同时维护实体模型和数据库是一件非常痛苦的事情(谁用谁知道~)。
使用sqlacodegen可以方便的把数据库结构映射为模型实体,这样我们无需编写一行代码就可以得到一个完整的模型实体。
sqlacodegen的使用如下:
1 | sqlacodegen mysql+pymysql://test2018:123456@localhost:3306/test2018?charset=utf8 > models.py |
然后,我们可以将模型文件导入直接使用:
1 | from sqlalchemy import create_engine |
- 本文作者: killf
- 本文链接: http://www.killf.info/编程语言/Python/使用Python访问MySql数据库/
- 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!