Python SQlite3 複数要素を追加する
Insert を使う
複数の要素を同じ行に追加したかったけど
クセがあって、なかなかうまくいかなかった
カラムと同じ要素数のクエスチョンマークのリスト
?,?,?,?
を作るようにしたらいけた。
関数にしてメモしておきます。
引数にディレクトリ、テーブル名、カラムのリスト、値のリスト
かなり変な感じだけど、とりあえずこれで動きました。
import sqlite3
def note_db_insert(dir,table,column_list,value_list):
"""
引数dirはディレクトリ
例 'datebase/note.db'
引数tableは変更したいテーブル
引数column_listは変更したい要素に対応するカラム(文字列で)を入れたリスト、
value_listと要素数が同じになるようにする。
引数value_listは追加したい要素を入れたリスト、
column_listと要素数が同じになるようにする。
カラムの順番と合わせる。
"""
connect_db = sqlite3.connect(dir, timeout=10)
cur = connect_db.cursor()
columun_text = ''
for i in range(len(column_list)):
columun_text = columun_text+column_list[i]+','
columun_text = columun_text[:-1]
value_text = ''
for i in range(len(value_list)):
value_text = value_text+str(value_list[i])+','
value_text = value_text[:-1]
q_list = ''
for i in range(len(value_list)):
q_list = q_list+'?,'
q_list = q_list[:-1]
sql = 'INSERT INTO '+table+'('+columun_text+') values('+q_list+')'
cur.execute( sql,value_list)
connect_db.commit()
connect_db.close()
コーヒー飲みます。ありがとうございます。