タイトルのようなことをしたかったのだが、検索してみると理解が間違えている(?)日本語の記事が普通に検索結果上位に出てきたので、自分の方でも改めて記載しておくことにした。
fetchoneを使って指定したデータをdict形式で取得する方法
サンプルコードを下記に載せる。
# DBの取得結果をdict形式で返すサンプル def get_item(id): conn = sqlite3.connect("foo.db") conn.row_factory = sqlite3.Row cur = conn.cursor() sql_statement = "select * from item where id=?" cur.execute(sql_statement, (str(id))) # idが数値型の場合、エラーになるので文字列に変換する # この時点では `sqlite3.Row object` として値が返ってきている。これはdictではないのでもうひと手間必要 result = cur.fetchone() conn.close() # dict形式に変換してreturn return dict(result)
fetchallを使って取得したすべてのデータをdict形式で取得する方法
サンプルコードは下記。
# DBの取得結果すべてをdict形式で返すサンプル def get_all_item(): conn = sqlite3.connect("foo.db") conn.row_factory = sqlite3.Row cur = conn.cursor() cur.execute("select * from item") # dictの配列として格納 result = [dict(row) for row in cur.fetchall()] conn.close() return result
以上となる。