2016-04-01 28 views
0

私は小さなデータフレームを持っています。データフレームをデータベースに書き込もうとすると、エラーが発生します。私はいくつかのデータを切り取ってみましたが、3つの項目で成功することができましたが、4番目の項目は失敗しました。もっと明確に何が起きているのかを教えてください。4番目のエントリが原因でdf.to_sqlが失敗する

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

は、その後、私は実行します:

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

は私を与える:

from sqlalchemy import create_engine 
engine = create_engine('oracle://wgubi:[email protected]: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:[email protected]:1522/BIWH') 
tiny_split.to_sql('mdb_model_out', engine, if_exists='replace') 

とエラーが出る -

TypeError: expecting string, unicode or buffer object

データベースにはテーブルがあり、すべてのデータはなくなりました。

私はデータベースに書きたい351のエントリを持っていて、3つずつ移動したくありません。

答えて

0

友人が見て、解決策を思いついた。

第1部 - 1つの列名はすべて大文字で、他の小文字は1つです。彼女は両方とも小文字にしました。

パート2 - 1列は数値ですが、データフレーム内のオブジェクトでした。彼女はこの列をfloat64に変換しました。

to_sqlが機能するようになりました。私はなぜそれがいくつかの行のために働くか、または大文字化が3つ以上のエントリのために違いを生んだ理由についての説明がありません。

関連する問題