2017-01-11 15 views
0

私はPython 2.7を使用してMS SQL 2012 DBでCRUD操作を実行しています。Python pymssql executemany deleteリストの値

"ComputerIDs"と呼ばれるIDのリストがあります。

IDがリスト内のいずれかのIDと等しいデータベース内のすべてのレコードを削除するクエリを実行します。

私は以下を試しましたが、うまくいかないようです。

cursor.executemany("DELETE FROM Computer WHERE ID=%s", ComputerIDs) 

答えて

0
sql='DELETE FROM Computer WHERE ID IN (%s)' 
inlist=', '.join(map(lambda x: '%s', ComputerIDs)) 
sql = sql % inlist 
cursor.execute(sql, ComputerIDs) 
+0

ありがとうございました。可能であればラムダを使用しないでください。適切にパラメータ化された他の解決策はありますか?ありがとう! – pengz

1

私は問題を解決することができました。

query_string = "DELETE FROM Computer WHERE ID = %s" 
cursor.executemany(query_string, ComputerIDs) 

このクエリが適切にSQLインジェクションからパラメータ化されているかどうかは誰にでも分かりますか?

+0

http://stackoverflow.com/a/7929438/6626530 SQLインジェクションの詳細については、この回答を参照してください。 – Shijo

関連する問題