2017-07-04 1 views
0

Ich bin sehr neu zu Mysql und dumping eine Datei in db mit Python. Ich habe 2 Tabellen Das Dateiformat ist:Abfrage zum Einfügen von Daten in MySQL-Tabelle enthält Fremdschlüssel

id name sports 
1 john baseball 
2 mary Football 

wie Schüler & Sport Schülertisch

id name 
1  John 
2  Mary 

hier id Primärschlüssel

& in Sport Tabelle

stu_id sports_title 

1  Baseball 
2  Football 

und hier stu_id ist Fremdschlüssel-Referenz mit Schülertisch

und mein Problem ist

query="insert into sports (stu_id,name)VALUES (%d,%s)" 
      ("select id from student where id=%d,%s") 
#words[0]=1 ,words[2]=Baseball 

args=(words[0],words[2]) 
cursor.execute(query,args) 

auf diesen Code ausführt, ich bin vor

"Not all parameters were used in the SQL statement") 
ProgrammingError: Not all parameters were used in the SQL statement 
+0

Bitte erläutern Sie, was "Wörter" sind. –

+0

... und was mit 'query' los ist. – DeepSpace

+0

@ IljaEverilä Ich denke, Wörter sind die Felder der Zeilen aus der Datei oben. – Barmar

Antwort

0

Sie nicht beide VALUES verwenden können, und SELECT als die Quelle der Daten in INSERT. Sie verwenden VALUES, wenn die Daten Literale sind, verwenden Sie SELECT, wenn Sie es von einer anderen Tabelle erhalten. Wenn es eine Mischung aus beiden ist, verwenden Sie SELECT und setzen Sie die Literale in die SELECT Liste.

query = """ 
    INSERT INTO sports (stu_id, sports_title) 
    SELECT id, %s 
    FROM student 
    WHERE name = %s 
""" 
args = (words[2], words[1]) 
cursor.execute(args) 

Oder, da die Datei mit der ID Student enthält, brauchen Sie nicht SELECT alle an.

query = "INSERT INTO sports(stu_id, sports_title) VALUES (%d, %s)" 
args = (words[0], words[1]) 
cursor.execute(args) 
Verwandte Themen