2016-11-01 5 views
2

私はPythonスクリプトを使用して複数の行を挿入しようとしているOracle DBにテーブルを持っています。データ型変数を挿入するINSERTコマンドPythonを使用するOracle

TAG - NUMBER(38,0) 
TAG_ID - NUMBER(38,0) 
TAG_STATUS - NUMBER(38,0) 
GROUP_ID - NUMBER(38,0) 
LIC_PLATE - VARCHAR(20 BYTE) 
LIC_PLATE_ID - CHAR(2 BYTE) 

私が使用していますSQLクエリ、

var6にvar1が、私はcsvファイルから読んでい
q = ("INSERT INTO TABLE (TAG, TAG_ID, TAG_STATUS_ID, GROUP_ID, LIC_PLATE, LIC_PLATE_ID) VALUES (var1, var2, var3, var4, var5, var6)") 

-

表には、データ型と、次のフィールドが 列を指定した受け入れファイル。例えば、私はそれは明らかに私がexecutemany()および他の例に見てきました

cursor.execute(q) 
conn.commit() 
cursor.close() 
conn.close() 

を失敗したが、私は私が手に傾けると思う上記の情報を使用して実行しようとすると、CSVファイルの行は私に

var1 = '11011' 
var2 = 25 
var3 = 1 
var4 = 66 
var5 = 'BSB261' 
var6 = 'IN' 

を与えます適切なフォーマットは、私が

q = ("INSERT INTO TABLE (TAG, TAG_ID, TAG_STATUS_ID, GROUP_ID, LIC_PLATE, LIC_PLATE_ID) VALUES (11011, 25, 1, 66, 'BSB261', 'IN')") 
をハードコード値を持っているところ、次のクエリは問題なく動作することを表

注によってhowvever期待します

すべてのヘルプはので、私自身の答えを書いてこれを行う方法を考え出し おかげ

+0

クエリ文字列が間違っている、ちょうどaoutでそれを印刷し、あなたが肝炎いけないことがわかりますその文字列の実際の値。 'q =" INSERT INTO TABLE(a、b)VALUES( '%s'、 '%d') '(' abc '、10) ' – hotfix

+0

のようにしなければならない値を渡してくれました。私は変数にハードコードされた値ではなく、クエリに入れたいと思っています。あなたの提案は、ハードコードされた値を使用して、私はそれを変数に置き換えています。それは再び動作しません – Imran

答えて

0

を高く評価している(ので、これを行うの改善のためのコメントを追加して自由に感じるためのより良い方法があるかもしれません)

q = "INSERT INTO TABLE (TAG, TAG_ID, TAG_STATUS_ID, GROUP_ID, LIC_PLATE, LIC_PLATE_ID) VALUES(:TAG, :TAG_ID, :TAG_STATUS_ID, :GROUP_ID, :LIC_PLATE, :LIC_PLATE_ID)"

、その後の操作を行います。

curs.execute(q, TAG=var1, TAG_ID=var2, TAG_STATUS_ID=var3, GROUP_ID=var4, LIC_PLATE=var5, LIC_PLATE_ID=var6)

関連する問題