13.13.1 モジュールの関数と定数

PARSE_DECLTYPES
この定数は connect 関数の detect_types パラメータと して使われます。

この定数を設定すると sqlite3 モジュールは戻り値のカラムの宣言 された型を読み取るようになります。意味を持つのは宣言の最初の単語です。 すなわち、"integer primary key" においては "integer" が読み取られます。 そしてそのコラムに対して、変換関数の辞書を探してその型に対して登録され た関数を使うようにします。変換関数の名前は大文字と小文字を区別します!

PARSE_COLNAMES
この定数は connect 関数の detect_types パラメータと して使われます。

この定数を設定すると SQLite のインタフェースは戻り値のそれぞれのカラムの名前を 読み取るようになります。文字列の中の [mytype] といった形の部分を探し、'mytype' がそのカラムの名前であると判断します。そして 'mytype' のエントリを変換関数辞書 の中から見つけ、見つかった変換関数を値を返す際に用います。 cursor.description で見つかるカラム名はその最初の単語だけです。すなわち、 もし 'as "x [datetime]"' のようなものを SQL の中で使っていたとすると、 読み取るのはカラム名の中の最初の空白までの全てですので、カラム名として使われるのは 単純に "x" ということになります。

connect( database[, timeout, isolation_level, detect_types, factory])
ファイル database の SQLite データベースへの接続を開きます。 ":memory:" という名前を使うことでディスクの代わりに RAM 上 のデータベースへの接続を開くこともできます。

データベースが複数の接続からアクセスされている状況で、その内の一つがデー タベースに変更を加えたとき、SQLite データベースはそのトランザクションが コミットされるまでロックされます。timeout パラメータで、例外を送 出するまで接続がロックが解除されるのをどれだけ待つかを決めます。デフォ ルトは 5.0 (5秒) です。

isolation_level パラメータについて は、13.13.2節の Connection オブ ジェクトの isolation_level プロパティの説明を参照してくださ い。

SQLite がネイティブにサポートするのは TEXT, INTEGER, FLOAT, BLOB およ び NULL 型だけです。もし他の型を使いたければ、その型のためのサポートを 自分で追加しなければなりません。detect_types パラメータを、モジュー ルレベルの register_converter 関数で登録した自作の 変換関数 と一緒に使えば、簡単にできます。

パラメータ detect_types のデフォルトは 0 (つまりオフ、型検知無し)です。 型検知を有効にするためには、PARSE_DECLTYPESPARSE_COLNAMES の適当な組み合わせをこのパラメータにセットします。

デフォルトでは、 sqlite3 モジュールは connect の呼び出しの際に モジュールの Connection クラスを使います。しか し、Connection クラスを継承したクラスを factory パラメー タに渡して connect にそのクラスを使わせることもできます。詳 しくはこのマニュアルの 13.13.4節を参考にしてください。

sqlite3 モジュールは SQL 解析のオーバーヘッドを避けるために内 部で文キャッシュを使っています。接続に対してキャッシュされる文の数を自 分で指定したいならば、cached_statements パラメータに設定してくだ さい。現在の実装ではデフォルトでキャッシュされる SQL 文の数を 100 にし ています。

register_converter( typename, callable)
データベースから得られるバイト列を希望する Python の型に変換する呼び 出し可能オブジェクト (callable) を登録します。その呼び出し可能オブジェ クトは型が typename である全てのデータベース上の値に対して呼び 出されます。型検知がどのように働くかについては connect 関 数の detect_types パラメータの説明も参照してください。注意が必 要なのは typename はクエリの中の型名と大文字小文字も一致しなけ ればならないということです。

register_adapter( type, callable)
自分が使いたい Python の型 type を SQLite がサポートしている型 に変換する呼び出し可能オブジェクト (callable) を登録します。その呼び 出し可能オブジェクト callable はただ一つの引数に Python の値を 受け取り、int, long, float, (UTF-8 でエンコードされた) str, unicode または buffer のいずれかの型の値を返さなければなりません

complete_statement( sql)
もし文字列 sql がセミコロンで終端された一つ以上の完全な SQL 文 であれば True を返します。判定は SQL 文として文法的に正し いかではなく、閉じられていない文字列リテラルが無いことおよびセミコロン で終端されていることだけで行なわれます。

この関数は以下の例にあるような SQLite のシェルを作る際に使われます。

# A minimal SQLite shell for experiments

import sqlite3

con = sqlite3.connect(":memory:")
con.isolation_level = None
cur = con.cursor()

buffer = ""

print "Enter your SQL commands to execute in sqlite3."
print "Enter a blank line to exit."

while True:
    line = raw_input()
    if line == "":
        break
    buffer += line
    if sqlite3.complete_statement(buffer):
        try:
            buffer = buffer.strip()
            cur.execute(buffer)

            if buffer.lstrip().upper().startswith("SELECT"):
                print cur.fetchall()
        except sqlite3.Error, e:
            print "An error occurred:", e.args[0]
        buffer = ""

con.close()

enable_callback_tracebacks( flag)
デフォルトでは、ユーザ定義の関数、集計関数、変換関数、認可コールバック などはトレースバックを出力しません。デバッグの際にはこの関数を flagTrue を指定して呼び出します。そうした後は 先に述べたような関数のトレースバックが sys.stderr に出力されま す。元に戻すには False を使います。

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。