2017-09-14 2 views
0

私は既に1つのmysqlテーブルにあるデータを別のテーブルに挿入しようとしています。カラム名は各テーブルで同じで、objkeyは、私が見たいカラムをmysqlに伝えるために使用したいアイテムのための分かりやすいデータです。Pythonを使ってあるテーブルから別のテーブルにmysqlデータを挿入する

import MySQLdb 

db = MySQLdb.connect(host='', user='', passwd='', db='') 
cursor = db.cursor 

sql = "INSERT INTO newtable (%s, %s, %s, %s) SELECT %s, %s, %s, %s FROM oldtable 
WHERE %s;" % ((name, desig, data, num), name, desig, data, num, obj = repr(objkey)) 
cursor.execute(sql) 

db.commit() 
db.close() 

は、それは私が構文エラーを持っていると言うが、私は私が初めてではなく、二番目のフィールド名を囲む括弧がなければならないかなり確信しているので、どこか分かりません。誰でも私が間違っていることを知っている?

+0

最初の行に書き込む表の列の名前を入れ、読み取っている表の列名を2行目に置く必要があります。だからこの答えでは、catidとタイトルは同じテーブルを指していない。 –

+0

'obj = repr(objkey)'で何をしようとしていますか?必要なSQL文を表示する可能性があります。 – Parfait

+0

実際のエラーメッセージを表示できますか? – sadmicrowave

答えて

0

私はあなたがobj = repr(objkey)行で何をしようとしているのか正確には分かりませんが、Pythonはこの行で変数を定義していて、SQL構文を設定していないと考えています。

sql = "INSERT INTO newtable (%s, %s, %s, %s) SELECT %s, %s, %s, %s FROM oldtable 
WHERE %s;" % ((name, desig, data, num), name, desig, data, num, obj = repr(objkey)) 

は、おそらくのようなものに変更する必要があります。

sql = "INSERT INTO newtable (%s, %s, %s, %s) SELECT %s, %s, %s, %s FROM oldtable 
WHERE obj=%;" % ((name, desig, data, num), name, desig, data, num, repr(objkey)) 

それでも、あなたはobjkeyがどこかのpython変数として定義された必要があるだろう。

この回答はうまくいく可能性がありますが、より正確な回答を得るためには、obj = repr(objkey)で達成することを期待するものを定義する必要があります。

関連する問題