2016-06-27 20 views
-1

データベースに変更を加える更新クエリがありますが、残念ながら正常に実行され、データベースに変更が見られません。 SQL更新クエリの1行のステートメントで何が間違っている可能性がありますか?更新クエリはSQLで正常に実行されますが、データベースに変更はありません。

update_query = '''UPDATE air_programmes SET total_count = total_count + 1 WHERE id='%s' 
     ''' % resource_id 

リソースIDは上記で定義した変数です。事前

+1

一部のデータベースでは、 'update'後' commit'を発行する必要があります。 –

+0

そのIDを持つ行はありますか? – jarlh

+0

phpMyadminでこのクエリを実行すると、その特定の列の変更が表示されますが、プログラムで実行すると更新が行われません。 – abhishek

答えて

1

ありがとうございますので、私はあなたがDB-API対応のコネクタ(のpython-のMySQLやMySQLコネクタ - のpythonなど)でMySQLを使用していると仮定しphpMyAdminのを言及。

最初のポイント:あなたはすなわち、明示的に変更をコミットする必要があります。もちろん

connection = YourConnector.connect(**connection_info) 
cursor = connection.cursor() 
update_query = """ 
    UPDATE air_programmes 
    SET total_count = total_count + 1 
    WHERE id='%s' 
    """ % resource_id 
cursor.execute(update_query) 
connection.commit() 

あなたはアップデートのバッチ全体を持っている場合は、バッチ全体に対して一度だけコミットすることをお勧めします。

第2のポイント:クエリ引数を渡すPython文字列フォーマットを使用すると、脆くなり、very unsafeです。あなたが本当にあなたのクエリののparamsの適切な消毒の世話をするために、DB-APIを使用したい:

connection = YourConnector.connect(**connection_info) 
cursor = connection.cursor() 
update_query = """ 
    UPDATE air_programmes 
    SET total_count = total_count + 1 
    WHERE id='%s' 
    """ 
cursor.execute(update_query, [resource_id])) 
connection.commit() 
+0

それは働いた!ありがとう、私は本当にあなたの助けに感謝:) – abhishek

+0

@ abhishekうれしい私は助けることができた - と答えを受け入れることを躊躇しないで;) –

関連する問題