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()

