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

26 篇文章 0 订阅
10 篇文章 0 订阅

这个问题是出现在使用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

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值