PythonでSQLite3を使う
概要
PythonにはSQLite3が組み込まれた状態で配布されています。SQLiteを使用する為にインストールや環境構築を行う必要はありません。
Create / Insert
import sqlite3 conn = sqlite3.connect("test.db") # Create conn.execute("create table tbl_name(num, val)") # Insert conn.execute("insert into tbl_name values( '1', 'test1' )") # ?で置き換え可能 conn.execute("insert into tbl_name values( ?, ? )", [ 2, "test2" ]) # executemanyで複数SQLの実行 conn.executemany("insert into tbl_name values( ?, ? )", [ ( 3, "test3" ), ( 4, "test4" ) ]) conn.commit()
Select
# 普通にSelect import sqlite3 conn = sqlite3.connect("test.db") cur = conn.cursor() # 1行ずつ読み込む cur.execute( "select * from tbl_name" ) for row in cur: print( str( row[0] ) + ", " + row[1] ) #=> 1, test1 #=> 2, test2 #=> 3, test3 #=> 4, test4 cur.close() # 全行をlistで返す cur.execute( "select * from tbl_name" ) list = cur.fetchall() print( list ) #=> [('1', 'test1'), (2, 'test2'), (3, 'test3'), (4, 'test4')] cur.close() # 指定した行分だけ返す cur.execute( "select * from tbl_name" ) list = cur.fetchmany( 2 ) print( list ) #=> [('1', 'test1'), (2, 'test2')] cur.close() conn.close()
# Rowから数値ではなく、カラム名で値を取り出す import sqlite3 conn = sqlite3.connect("test.db") conn.row_factory = sqlite3.Row cur = conn.cursor() cur.execute( "select * from tbl_name" ) for row in cur: print( str( row["num"] ) + ", " + row["val"] ) #=> 1, test1 #=> 2, test2 #=> 3, test3 #=> 4, test4 cur.close() conn.close()
# DBをメモリ上に作成する(Connectionがcloseされた時点で内容は消失します) import sqlite3 conn = sqlite3.connect(":memory:") conn.execute("create table tbl_name(num, val)") conn.execute("insert into tbl_name values(1, 'test1')") cur = conn.cursor() cur.execute( "select * from tbl_name" ) print( cur.fetchone() ) cur.close() conn.close()