2012-03-17 12 views
0
conn = MySQLdb.connect(host=IP,user='john',passwd='ab2nng',db='mydb') 
cursor = conn.cursor() 

#this works. 
cursor.execute("select * from crawl_log") 
res = cursor.fetchall() 
print res 

#this doesn't work. 
cursor.execute("insert into crawl_log(k, v) values(%s, %s)", ('test','test')) 

なぜ機能しなかったのですか?エラーは印刷されず、何も印刷されませんINSERTクエリが機能しない理由を確認するにはどうすればよいですか?

+0

mysqldbモジュールのドキュメントからは分かりにくいですが、cursor.execute( "crawl_log(k、v)の値( '%s'、 '%s')に挿入)のように、 "、( 'test'、 'test'))。 %sの構文はsprintf形式のように見えますが、これはテキスト置換であり、バインドされた変数ではないことを暗示しています...しかし、docはいずれの方法でも言いません。 –

+0

データベースコードをデバッグするときに、データベースに対話モードで話すこと(つまり、データベースに直接SQLに直接入力すること、phpMyAdminなどを使用すること)が役立つことがあります。これは、SQLが間違っているのか、違う。 –

答えて

0

あなたの問題修正するキー「

「は、例えば、キーは次のようになり名前 周りに」この アドオン」を修正し、TOO SHORTかもしれませんデータへの変更に影響を与えるステートメントの後にコミットする必要があるトランザクションを開始します。挿入後にconn.commit()を試しましたか?

0

このような問題の典型的な原因は、行/テーブル/データベース名

くださいダブルチェックのスペルミスで、これは常に別のものであることである私が

をめちゃくちゃにして主な問題です行/テーブル/ DB名がうまくいけば、これはデフォルトで

+0

すべて正しいです。私はテーブルnamdとカラム名を変更しました。 – TIMEX

関連する問題