pymysql读取数据库转换为dataframe时报错:ValueError: DataFrame constructor not properly called!

这个问题是出现在使用pymysql连接数据库,使用fetchall()获取数据。并初始化为dataframe时报错,初步排查问题可能是某个包版本不对。因为同样的代码之前跑的时候是可以的。

一、出错代码

import pymysql   # 0.23.0
import pandas as pd

connection = pymysql.connect(host='xxx', user='root', password='xxx', database='finance',port=int(3306))
cursor = connection.cursor()

sql = '''
    show databases
'''
cursor.execute(sql)
res = cursor.fetchall()
col = [item[0] for item in cursor.description]
crash_result = pd.DataFrame(res, columns=col)

print(crash_result)

二、报错信息

D:\Anaconda3_3.6.0\python.exe C:\Users\1\Desktop\Network_Robots_Project_linux\t.py 
Traceback (most recent call last):
  File "C:\Users\1\Desktop\Network_Robots_Project_linux\t.py", line 13, in <module>
    crash_result = pd.DataFrame(res, columns=col)
  File "D:\Anaconda3_3.6.0\lib\site-packages\pandas\core\frame.py", line 422, in __init__
    raise ValueError('DataFrame constructor not properly called!')
ValueError: DataFrame constructor not properly called!

Process finished with exit code 1

三、问题原因

应该是pandas版本太低了(0.23.0的我就是这个原因)

四、问题解决解决

4.1)摆烂式解决

# 用一个list把res包住即可
crash_result = pd.DataFrame(list(res), columns=col)

4.2)迎难而上式解决

# 安装1.1.5版本的pandas
pip install pandas==1.1.5

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2023年8月17日
下一篇 2023年8月17日

相关推荐