总结使用mysql.connector过程中遇到的问题及解决办法:
1. 当Mysql的版本为8.0及以上时,利用mysql.connector连接Mysql出现如下错误:
mydb = mysql.connector.connect(host="localhost", user="root", passwd="1234", database="rac_ecust")
mysql.connector.errors.NotSupportedError: Authentication plugin 'caching_sha2_password' is not supported
可以采用如下方式解决:
mydb = mysql.connector.connect(host="localhost", user="root", passwd="1234", database="rac_ecust", auth_plugin='mysql_native_password')
2. 利用mysql.connector操作MySQL时,如果出现(在一个非套接字上尝试了一个操作):
可能是由于与数据库已关闭连接,重连数据库。
3. 执行SELECT语句进行排序查询记录时,如果数据库中这个表的记录数小于等于查询的记录数(上面为5)时,则无法查询:
4. 使用mysql.connector如下的命令进行读取数据库记录时,若无记录,不会报错!
mycursor.execute("SELECT * FROM table_name")
但是如下读取数据时,record的数据类型是NoneType:
record = mycursor.fetchone()
若有记录,第一句并不会返回记录数,而pymyql是可以的,可以尝试一下:
同时,与pymysql不同的是,在mysql.connector中,以上两句命令必须一起出现,即执行完第一句,若不执行第二句,则接下来操作数据库会报错!
5. 利用mysql.connector进行查询Mysql记录时通常需要执行如下命令:
my.execute("SELECT * FROM table_name")
my.fetchone() or my.fetchall()
其中, fetchone() 返回的是 tuple; fetchall() 返回的是 list,里面的每一个元素都是一个tuple
6. 将数据存入Mysql数据库时,可能会出现结构不匹配的问题:
Python 'float64' cannot be converted to a MySQL type
此时需要将原数据转换成float类型,例如使用float()。