2016-12-23 6 views
2

私は単一の列テーブルを持っています。この列に値を挿入する必要があります。プログラムはエラーなく正しく実行されます。しかし、私がデータベースをチェックすると、何も挿入されません。コードとテーブルに別の列を追加すると、プログラムはデータを正しく挿入します。単一の列テーブルのデータを挿入する方法を教えてください。 これは、テーブルに何も挿入しない単一の列のコードです。PythonでMySQLを使用して単一の列の値を挿入できません

import MySQLdb 
conn = MySQLdb.connect(host= "localhost", 
        user="root", 
        passwd="123", 
        db="dbname") 
cursor = conn.cursor() 
x=100 
try: 
    sql="""INSERT INTO table (col1) VALUES ('%s')""" 
    cursor.execute(sql, (x)) 
    conn.commit() 
except: 
    conn.rollback() 

conn.close() 

これは2つの列コードです。

import MySQLdb 
conn = MySQLdb.connect(host= "localhost", 
        user="root", 
        passwd="123", 
        db="dbname") 
cursor = conn.cursor() 
x=100 
y=2 
try: 
    sql="""INSERT INTO table (col1,col2) VALUES ('%s','%s')""" 
    cursor.execute(sql, (x,y)) 
    conn.commit() 
except: 
    conn.rollback() 

conn.close() 

答えて

0

あなたはcursor.execute()への2番目の引数はタプルであり、1タプルが書かれていることをことを知っておく必要があり、その後、%s周りに引用符を失うする必要があります。

(item,) 

ノートカンマを。解決策は次のとおりです。

sql="""INSERT INTO table (col1) VALUES (%s)""" 
cursor.execute(sql, (x,)) 
+0

私はこの 'sql =" "" INSERT INTOテーブル(col1、col2)VALUES(%s) "" " cursor.execute(sql、(x、))'を試しました。実行されますが、データをDBに挿入しません。 – user6875880

+0

プレースホルダの周りの引用符を削除すると、2列のバージョンが正しく表示されます。 – thebjorn

-1

これを試してみてください。

sql="""INSERT INTO table (col1) VALUES ({});""".format(x) 
cursor.execute(sql) 
+0

コードの説明とコメントを忘れずに、関連文書[レビューから] – Blag

+0

を入力してください。あなたのコードがOPの問題をどのように解決するかを説明してください。この質問を見つける他の人たちは、あなたほど経験が豊富ではないかもしれません。あなたのソリューションを理解するのに役立ちます。 –

+0

この戦略は、SQLインジェクションでも実行されるのを待っています(この特定のケースでは、おそらく最初にSQL構文エラーが発生します)。 – thebjorn

0

あなたはこれらのいずれかを試すことができます。

  1. '%s'を使用しないでください、あなただけの使用、代わりに?
  2. 代わりの'%s'を使用することができます%s見積もりなし
関連する問題