2017-01-24 9 views
0

これは非常に簡単な質問ですが、私は困惑しています。 Pythonを使用してSQLDeveloperを介してOracleテーブルにデータのチャンクを挿入すると成功しますが、いくつかの追加値を挿入しようとすると失敗します。PythonでOracleテーブルにデータを挿入する

私は23行5列のDataFrameを持っています。これをOracleテーブルに簡単にエクスポートできます。また、テーブルの1つの列に「NEFS 2」と別の値「1」の列を入力すると、両方のエクスポートを正常に実行できません。ここで

は私の輸出コードです:

cursor = con.cursor() 
exported_data = [tuple(x) for x in df_Quota.values] 
sql_query = (("INSERT INTO ROUGHTABLE(species, date_posted, stock_id, pounds, money)" "VALUES (:1, :2, :3, :4, :5)"), ("INSERT INTO ROUGHTABLE(sector_name, ask)" "VALUES (NEFS 2, 1)")) 
cursor.executemany(sql_query, exported_data) 
con.commit() 

cursor.close() 
con.close() 

それはエラーTypeError: expecting string or bytes object

とラインcursor.executemany(sql_query, exported_data)に失敗した私は、私のsql_query 2に異なる文を分割する必要がありますか?もしそうなら、私は2つの異なるcursor.executemanyステートメントを持つ必要がありますか?それとも、それはそれより大きな問題ですか? SQLの初心者であることを私に許してください。助けてくれてありがとう。

+0

はい、基本的にこれらは、2つの別々のSQL文です。 – BobC

答えて

1

あなたが値を(:1、:2、:3、:4、:5、 'NEFS」という値でROUGHTABLE(種、date_posted、stock_id、pounds、money、sector_name、ask) 2 '、1)。その場合は、必要なSQLは次のとおりです。

INSERT INTO ROUGHTABLE(species, date_posted, stock_id, pounds, money, sector_name, ask) 
VALUES (:1, :2, :3, :4, :5, 'NEFS 2', 1) 

そして、3行目のpythonのコードは次のようになります。

sql_query = "INSERT INTO ROUGHTABLE (species, date_posted, stock_id, pounds, money, sector_name, ask) VALUES (:1, :2, :3, :4, :5, 'NEFS 2', 1)" 
+0

本当にとても簡単でした。私は本当に自分でそれを理解することができたはずです。答えに時間をとってくれてありがとう:) – theprowler

+0

ねえ、あなたが気にしないなら、本当に単純な問題のために新しいStackOverflowの質問を全部頼みたくはありません...私はROUGHTABLEを追加の値ですが、これは 'NEFS 2'や '1'のように常に同じではなく、ドキュメントから解析されますが、DataFrame 'df_Quota.values'には含まれていませんこの値をエクスポートしてください...それは 'INSERT INTO ROUGHTABLE(species、、、、trade_year)VALUES(:1、、、 'NEFS 2'、1、date)'のようになります。変数 'date'は、それは失敗します...助けることができますか? – theprowler

+0

あなたは質問をするべきだと私は思います。その短い答えは、SQLは 'INSERT INTO ROUGHTABLE(species、、、trade_year)VALUES(:1、、、 'NEFS 2'、1、:6)'であり、あなたのデータセットにPython。 SQLデータベースに日付を挿入するのは難しいことです。 –

関連する問題