我的数据帧很小。当我尝试将数据帧写入数据库时,我不断收到错误。我试图删除一些数据,并且能够成功获得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个。
答案 0 :(得分:0)
一位朋友看了一眼,然后想出了一个决议。
第1部分 - 一个列名称全部为大写,另一个小写名称。她把它们都做成了小写。
第2部分 - 一列是数字,但是是数据框中的一个对象。她将此列转换为float64。
to_sql现在可以运行了。我没有任何解释为什么它适用于几行,或者为什么大写对3个以上的条目产生了影响。