[やりたいこと]
SQLite3で存在しなくなった値をテーブルから削除したいと考えています。
Python
1fruits = [{'name': 'りんご', 'price': '100'}, 2 {'name': 'バナナ', 'price': '200'}, 3 {'name': 'いちご', 'price': '300'}, 4 ]
上記で3つの値をDBに反映した後に、一つ削除します。。
Python
1fruits = [{'name': 'りんご', 'price': '100'}, 2 {'name': 'バナナ', 'price': '200'}, 3 ]
この時に、存在しなくなった値をテーブルから削除したいのですが適切なものを見つけることができませんでした。
[やったこと]
下記コードで結果としては、削除分が反映されます。
しかし、このコードだと全てデータを削除→書き込みをしているので、存在しなくなった値だけテーブルから削除したいと思いますが、ご教授頂けないでしょうか?
import sqlite3 fruits = [{'name': 'りんご', 'price': '100'}, {'name': 'バナナ', 'price': '200'}, {'name': 'いちご', 'price': '300'}, # 2回目の実行で削除する ] conn = sqlite3.connect('fruits.db') c = conn.cursor() # c.execute(''' # CREATE TABLE fruits ( # name text primary key, # price integer # ) # ''') c.executemany('DELETE FROM fruits WHERE EXISTS (SELECT name FROM fruits)', fruits) c.executemany('REPLACE INTO fruits VALUES (:name, :price)', fruits) conn.commit() conn.close()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/09 02:22
2018/10/09 11:42
2018/10/11 06:21