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()
戻る    ご意見、ご要望