【问题标题】:fourth entry causes df.to_sql fail第四个条目导致 df.to_sql 失败
【发布时间】:2016-07-21 21:57:35
【问题描述】:

我有一个较小的数据框。当我尝试将数据框写入数据库时​​,我不断收到错误消息。我尝试删除一些数据,并且能够成功输入 3 个条目,但第 4 个条目失败。让我更清楚地展示正在发生的事情。

我拿了一个数据框:

good_asmnt = ('LCC1', 'OQC1', 'QLC1' )
tiny_split = this_split [ this_split [ 'COURSE_NUMBER' ].isin ( good_asmnt )]
tiny_split

给我:

-------------------------------
| | COURSE_NUMBER  | bin_var  |
-------------------------------
|0| LCC1           |    0     |
|1| OQC1           |    1     |
|2| QLC1           |    1     |
-------------------------------

然后我运行:

from sqlalchemy import create_engine
engine = create_engine('oracle://wgubi:w3d0stats@192.168.52.13:1522/BIWH')
tiny_split.to_sql('mdb_model_out', engine, if_exists='replace')

检查数据库表明该表存在正确的数据。

现在我添加一个条目:

good_asmnt = ('LCC1', 'OQC1', 'QLC1', 'MYC1' )
tiny_split = this_split [ this_split [ 'COURSE_NUMBER' ].isin ( good_asmnt )]
tiny_split

给我:

-------------------------------
| | COURSE_NUMBER  | bin_var  |
-------------------------------
|0| LCC1           |    0     |
|1| OQC1           |    1     |
|2| QLC1           |    1     |
|3| MYC1           |    0     |
-------------------------------

然后我运行:

from sqlalchemy import create_engine
engine = create_engine('oracle://wgubi:w3d0stats@192.168.52.13:1522/BIWH')
tiny_split.to_sql('mdb_model_out', engine, if_exists='replace')

并得到一个错误 -

TypeError:需要字符串、unicode 或缓冲区对象

在数据库中,表在那里,所有的数据都没有了。

我有 351 个条目要写入数据库,但不想一次移动 3 个。

【问题讨论】:

    标签: python sql database oracle dataframe


    【解决方案1】:

    一位朋友看了看,想出了一个解决方案。

    第 1 部分 - 一个列名全部大写,另一个小写。她将它们都设为小写。

    第 2 部分 - 一列是数字,但它是数据框中的一个对象。她将此列转换为 float64。

    to_sql 现在可以工作了。我没有任何解释为什么它适用于几行,或者为什么大写对超过 3 个条目有影响。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-07
      • 2019-10-23
      • 2011-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-10
      相关资源
      最近更新 更多