2016-04-12 7 views
1

私のPythonスクリプトは次のようになります。私は2列の値を挿入しようとしているinsert文を発射していますはpythonでSQLクエリ内の変数を使用し

#!/usr/bin/python 
    import MySQLdb 

    u='ABNCSDS7612' 
    db = MySQLdb.connect(host="localhost",user="root",passwd="abc",db="mydb") 

    cur = db.cursor() 

    sql=("insert into t1(p_id,job_id) Values ((select p_id from t2 where name='OUTPUT'), 
(select job_id from job where job_uuid= "%s"))",(u)) 

    cur.execute(*sql) 

    db.commit() 

を、と私はから2列目の値が欲しいです私のpythonスクリプトの変数u = 'ABNCSDS7612'。私は似たような多くのポストから助けを受けましたが、運はありません。私はまだ以下のようなエラーに直面しています:

SyntaxError: invalid syntax 

sqlの%sの後に現れる括弧の後にエラーが表示されています。誰かが助けてくれますか?

答えて

3

構文エラーが無効です。引用符を入れた方法が原因です。

実際には、プレースホルダの周りに引用符は必要ありません。また、クエリパラメータをタプルに入れる必要があります。また、私は読みやすさを改善するために、複数行のクエリを記述します。

sql = """ 
    insert into 
     t1(p_id,job_id) 
    Values 
     ((select p_id from t2 where name='OUTPUT'), 
     (select job_id from job where job_uuid = %s))""" 
cur.execute(sql, (u,)) 
+0

も一つの値を持つPythonでタプルは 'でポイントを作るために良いでしょう(U)'(あなたが持っているように)(OPのように) '(u)'ではありません。 –

+0

@ブラッド。うん、メモはそこに答えがあります。 – alecxe

0
#!/usr/bin/python 
import MySQLdb 

u='ABNCSDS7612' 
db = MySQLdb.connect(
host="localhost", 
user="root", 
passwd="abc", 
db="mydb") 

cur = db.cursor() 

sql="""insert into t1(p_id,job_id) Values 
((select p_id from t2 where name='OUTPUT'), 
(select job_id from job where job_uuid= '%s'))""" % (u) 

cur.execute(*sql) 
db.commit() 
+0

もしあなたが以下の値を持つとすれば、どうなるでしょう: 'O'Brien'? – alecxe

+1

このコードでは質問に答えることができますが、理由や質問にどのように回答するかについての追加のコンテキストを提供すると、長期的な価値が大幅に向上します。あなたの答えを[編集]して、説明を加えてください。 – CodeMouse92

関連する問題