python - 从 json 创建的 Pandas 数据框具有未命名列 - 由于未命名列问题无法插入 MySQL

标签 python mysql json pandas dataframe

现在我正在处理一些 JSON 数据,我正试图将它动态地推送到 MySQL 数据库中。 JSON 文件很大,所以我必须使用 Python 中的 yield 函数逐行仔细检查它,将每一行 JSON 转换成小的 pandas DF 并将其写入 MySQL。问题是,当我从 JSON 创建 DF 时,它会添加索引列。似乎当我向 MySQL 写入内容时,它会忽略 index=False 选项。代码如下

import gzip
import pandas as pd
from sqlalchemy import create_engine

#stuff to parse json file
def parseJSON(path):
  g = open(path, 'r')
  for l in g:
      yield eval(l)
#MySQL engine
engine = create_engine('mysql://login:password@localhost:1234/MyDB', echo=False)
#empty df just to have it
df = {}

for l in parseJSON("MyFile.json"):
    df = pd.DataFrame.from_dict(l, orient='index')
    df.to_sql(name='MyTable', con=engine, if_exists = 'append', index=False)

我得到一个错误:

OperationalError: (_mysql_exceptions.OperationalError) (1054, "Unknown column '0' in 'field list'")

知道我遗漏了什么吗?还是有办法解决这个问题?

更新。每次我在内部循环中创建数据框时,我都会看到数据框有一个值为 0 的未命名列。

这里有一些关于 DF 的信息:

df
Out[155]: 
                                                                0
reviewerID                                         A1C2VKKDCP5H97
asin                                                   0007327064
reviewerName                                        Donna Polston
helpful                                                    [0, 0]
unixReviewTime                                         1392768000
reviewText      love Oddie ,One of my favorite books are the O...
overall                                                         5
reviewTime                                            02 19, 2014
summary                                                       Wow

print(df.columns)
RangeIndex(start=0, stop=1, step=1)

最佳答案

您当前有一个框架,其中一列名为 0,您的预期列名称作为框架的索引。或许你可以试试

df = pd.DataFrame.from_dict(l)

注意:我认为如果您可以构建一个 dict(或其他一些结构),将所有行转换为 df,然后推送到 mysql,您的性能会好得多。一次一行可能太慢了

关于python - 从 json 创建的 Pandas 数据框具有未命名列 - 由于未命名列问题无法插入 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43462764/

相关文章:

mysql - 忠诚度计划数据库设计

javascript - Vue.js 消费 json

Javascript - 将 JSON 对象属性值从数组转换为字符串

python - Sqlite3 Db 转 Json,用于 Highcharts?

python - 将函数应用于 Pandas 数据框中的特定单元格

python并行循环: communicate to outside

PHP 分页在排序后不起作用

python - 是否可以将变量注入(inject)python logger Filter

python - 用于密码重置的 Django-rest-auth HTML 电子邮件

mysql - Mysql中简单查询速度慢