【呕心总结】python如何与mysql实现交互及常用sql语句
9 月初,我对 python 爬虫
燃起兴趣,但爬取到的数据多通道实时同步读写用文件
并不方便,于是开始用起mysql
。这篇笔记,我将整理近一个月的实战中最常用到的 mysql
语句,同时也将涉及到如何在python3
中与 mysql
实现数据交换。
关于工具/库,特别说明下:
1、我安装了 mysql
,并直接采用管理员身份运行命令行提示符(cmd)
查看 mysql
,并没有安装任何 mysql
的可视化图形界面工具。
2、在 python
脚本中,我采用 pymysql
和 sqlalchemy
这两个库与 mysql
建立连接,用 pandas
来处理数据。
一、建立连接与数据交互
与 mysql 交互的方式,我目前共使用 4 种。其中采用管理员身份运行命令行提示符(cmd)
查看 mysql
,其操作图示可另写一篇。这里就不占篇幅了。mysql的可视化图形界面工具,我目前并没有用到,也没有迫切使用它的需要。另外 3 种方式都是通过 python 脚本进行。
情境A:python 演算得出数据,想要写入数据库
python 脚本已得到表格类大量数据,想要一次性写入数据库,常用代码如下:
import pandas as pd
# 与 mysql 建立连接
from sqlalchemy import create_engine
conn_eng = create_engine('mysql+pymysql://username:password@localhost:3306/databasename',encoding='utf8')
# 调用 pandas 的方法,数据写入mysql
pd.io.sql.to_sql(your_df, "table_name", conn_eng, if_exists='append',index=False)
表格类数据,我用的是 pandas
的 dataframe
结构。pd.io.sql.to_sql()
的参数还有许多其它用途,但上面这种是我个人使用最高频的。效果是:无需自己提前建表,将自动建新表。美中不足是:表的列属性自动生成,通常不合心意,还需检查和修改。
如果不想用 pd.io.sql.to_sql()
或者想更精细、复杂的操作,则用到下面的情境C。
情境B:python 脚本想从 mysql 拿到数据
如果已经存在某个表格,想要向该表格提交某条指令,需返回数据,我用的是 pandas
的read_sql ()
,返回的数据类型是 pandas
的 dataframe
。sql 查询语句挺好写的,具体总结在本文下方。
import pymysql
# 与 mysql 建立连接
conn = pymysql.connect(