この定数を設定すると sqlite3 モジュールは戻り値のカラムの宣言 された型を読み取るようになります。意味を持つのは宣言の最初の単語です。 すなわち、"integer primary key" においては "integer" が読み取られます。 そしてそのコラムに対して、変換関数の辞書を探してその型に対して登録され た関数を使うようにします。変換関数の名前は大文字と小文字を区別します!
この定数を設定すると SQLite のインタフェースは戻り値のそれぞれのカラムの名前を
読み取るようになります。文字列の中の [mytype] といった形の部分を探し、'mytype'
がそのカラムの名前であると判断します。そして 'mytype' のエントリを変換関数辞書
の中から見つけ、見つかった変換関数を値を返す際に用います。
cursor.description で見つかるカラム名はその最初の単語だけです。すなわち、
もし 'as "x [datetime]"'
のようなものを SQL の中で使っていたとすると、
読み取るのはカラム名の中の最初の空白までの全てですので、カラム名として使われるのは
単純に "x" ということになります。
database[, timeout, isolation_level, detect_types, factory]) |
":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_DECLTYPES と PARSE_COLNAMES の適当な組み合わせをこのパラメータにセットします。
デフォルトでは、 sqlite3 モジュールは connect の呼び出しの際に モジュールの Connection クラスを使います。しか し、Connection クラスを継承したクラスを factory パラメー タに渡して connect にそのクラスを使わせることもできます。詳 しくはこのマニュアルの 13.13.4節を参考にしてください。
sqlite3 モジュールは SQL 解析のオーバーヘッドを避けるために内 部で文キャッシュを使っています。接続に対してキャッシュされる文の数を自 分で指定したいならば、cached_statements パラメータに設定してくだ さい。現在の実装ではデフォルトでキャッシュされる SQL 文の数を 100 にし ています。
typename, callable) |
type, callable) |
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()
flag) |
sys.stderr
に出力されま
す。元に戻すには False を使います。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。