安装方法
支持python3
的mysql driver
有mysqlclient
和pymysql
,不推荐只支持2的MySQLdb
1 | ubuntu |
数据库的连接
这里有所有的连接参数列表
1 | # 使用Oracle官方提供的数据库引擎的连接方法 |
Difference:两个库的区别
1 | MySQL Connector/Python |
CURD操作
插入
1 | # 插入一条数据 |
读取
1 | # 看了源码发现,fetchone/fatchmany/fetchall实现居然是一样的:https://github.com/PyMySQL/mysqlclient-python/blob/7d289b21728ab1a94bb1f0210a26367c6714d881/MySQLdb/cursors.py,结果都是一次取出保存,这三个方法就是在结果列表里面切片而已 |
TroubleShooting
获取insert后的ID值
1
db.insert_id() # 表示上一次插入数据的ID
获取原始SQL语句
1
print(cursor._last_executed)
多线程的情况下,出现错误”OperationalError:(2013, ‘Lost connection to MySQL server during query’)”,出现这种情况是因为在多线程的情况下,如果只有一个mysql连接,那么mysql该连接会在执行完一个线程后销毁,需要加锁,在线程里面修改全局变量,会导致该变量的引用出错
1
2
3
4
5LOCK.acquire()
mysql.cursor.execute(sql)
result = mysql.cursor.fetchall()
LOCK.release()
print(len(result))Can’t connect to local mySQL server ough socket ‘/tmp/mysql.sock
可能原因是由于MySQL是编译安装的,没有放在默认的目录,导致python找不到默认的sock文件,可以用一个软连接将实际文件链接到这个默认的目录下面
EnvironmentError: mysql_config not found,原因在mac环境下没有安装mysql包,需要
brew isntall mysql
安装mysqlclient的时候ld: library not found for -lssl: python安装包时出现类似ssl的错误,参照Python手册,使用这种方式安装
pip install mysqlclient --global-option=build_ext --global-option="-L/usr/local/opt/openssl/lib" --global-option="-I/usr/local/opt/openssl/include"
安装mysqlclient的时候出错Exception: Can not find valid pkg-config name. Specify MYSQLCLIENT_CFLAGS and MYSQLCLIENT_LDFLAGS env vars manually:尝试先
brew install mysql pkg-config
Did you install mysqlclient如果尝试很多方法都不行,又确实安装成功了,可以尝试更换mysqlclient的版本,例如我现在2.2.4不行,安装2.2.2就行了