なにこれ
やっほ
python経由でsqlite db遊んでたときに遊ぶどころじゃなくなった事案をメモするところ
パラメータ指定
?
と:
のパヤーンがある。
特定のカラムの情報だけしか無いときに使う。(カラムいちいち全指定するの嫌)
query = ('INSERT INTO table (columnA) VALUES (:columnA)')
cursor.execute(query, {'columnA':'hogehoge'})
未確認
なんか~~:=
~~ **=:
**みたいな指定どっかで見たんだよなぁ・・・
こいつ使ったらパラメータで渡す内容、順番関係なく出来ないだろうか
# 試してダメだったやつ
query = ('INSERT INTO table (columnA, columnB) VALUES (columnA=:hogeA, columnB=:hogeB)')
cursor.execute(query, {'hogeB':'hogehoge'.'hogeA':'hogege'})
追記 これ単純に
:
のパラメータを代入してるだけやんって気付いてしまった解決(追追記:してないかも)
参考
Crane & to. > Python3でSQLite3を使う – 基本操作からエラー処理までサンプルコード付
Python公式のやつ
stack overflow > sqlite-parameter-substitution-problem
最新のIDを割り振る
特定のカラムに同じ内容のfieldが存在してたらID被りだけをゴリ押しで回避する
INSERT INTO table (id, content) SELECT IFNULL(MAX(id), 0) + 1, content="hogegenoge" FROM table WHERE content