Python操作MySQL的几种方式详解:从数据分析到Web开发必备技能
点击上方“风控圈子”

选择“星标”公众号
[id_1730492085]
很多 NoSQL 数据库在近几年表现得很出色。然而,像 MySQL 这样的关系型数据库仍然是互联网的主要数据库之一。每个学习 Python 的人都有必要掌握一门数据库。不管是进行数据分析,还是做网络爬虫、Web 开发,或者是机器学习,都需要与数据库打交道。而 MySQL 是最流行的数据库之一。本篇文章将介绍 Python 操作 MySQL 的几种方式,在实际开发过程中可以根据实际情况进行合理选择。
[id_770778034]
mysqlclient
目前存在两种主流的安装方式。其中一种方式能够在网站上找到与之对应的 whl 包并进行下载安装。~gohlke/pythonlibs/#mysqlclient
在cmd命令行中进入安装文件所在路径运行命令:
# Windows安装pip[id_1080764024]install mysqlclient 1.4.4 cp37 cp37m win_amd64.whl
另外一种方式是直接调用cmd命令:
# Windows安装pip install mysqlclient
python 操作mysql数据库基础
import MySQLdbdb = MySQLdb.connect(host="localhost", # 主机名user="root", # 用户名passwd="password", # 密码db="db") # 数据库名称# 查询前,必须先获取游标cursor = db.cursor()# 执行的都是原生SQL语句cursor.execute("SELECT * FROM TABLE_NAME")for row in cursor.fetchall():print(row[0])
02
PyMySQL
PyMySQL 是由纯 Python 实现的驱动。它在速度方面比不上 MySQLdb。它最大的特点或许是安装方式不那么繁琐。并且它还兼容 MySQL-python。
pip install PyMySQL# 为了兼容mysqldb,只需要加入pymysql.install_as_MySQLdb()
import pymysqlconn = pymysql.connect(host="localhost", # 主机名user="root", # 用户名passwd="password", # 密码db="db") # 数据库名称# 查询前,必须先获取游标cursor = conn.cursor()# 执行的都是原生SQL语句cursor.execute("SELECT * FROM TABLE_NAME")data = cursor.fetchone()cursor.close()conn.close()
03
peewee
写原生 SQL 的过程较为繁琐,且存在代码重复的情况,同时也缺乏面向对象思维。基于此,便诞生了许多封装 wrapper 包以及 ORM 框架。ORM 指的是 Python 对象与数据库关系表之间的一种映射关系。有了 ORM 之后,你就不再需要亲自去编写 SQL 语句了。写代码的速度得到了提高,并且能够兼容多种数据库系统,像 sqlite、mysql 和 postgresql 等。这样做可能会在性能上有一些损失。如果你熟悉 Django 自带的 ORM,那么 peewee 的学习成本几乎为零。它在 Python 中是最为流行的 ORM 框架。
pip install peewee
importpeeweedb 等于 peewee 的 MySQLDatabase,其中主机为"localhost", 如果当前模块名为 '__main__',则创建表,若有多个表则用列表形式创建,这里创建的表是 School.create_table()。
04
SQLAlchemy
如果要找一种能同时支持原生 SQL 以及 ORM 的工具,那么 SQLAlchemy 就是最佳选择,它与 Java 中的 Hibernate 框架很接近。
首先需要安装mysql模块:进入cmd命令行,执行
pip install mysql
其次才可安装sqlalchemy:进入cmd命令行,执行
pip install SQLAlchemy
使用 sqlalchemy 创建引擎。得到连接对象,其参数为 mysql+pymysql://用户名:密码@地址/数据库名。conn = create_engine("使用 mysql 数据库,通过 pymysql 驱动,以 root 用户、password 密码连接到本地主机 localhost 的 db 数据库")# 查询resselect = conn.execute("SELECT * FROM TABLE_NAME")输出列表数据,即执行 print(resselect.fetchall()) 操作。# 插入,输出影响行数resinsert=conn.execute(将数据插入到 TABLE_NAME 表中,插入的列名为 namex 和 sex,对应的值分别为 '%s' 和 '%s'。%("苏子涵","F")).rowcount print(resinsert)
现在已经大致清楚了这几种数据库驱动的优缺点。接下来,你能够挑选其中的一个,开始对其进行系统的学习,之后将其应用到项目当中。如果有不懂的地方,可以在研习社进行咨询。
全文完,感谢您的耐心阅读
请顺手点个“在看”吧~
往期精彩回顾