Python SQLite スレッド間でコネクションの使いまわしは出来ない

以下のエラーが出た。

ProgrammingError: SQLite objects created in a thread can only be used in that same thread.The object was created in thread id 5052 and this is thread id 3176

SQLiteのオブジェクトは作成されたスレッドでしか使えない。とのこと。
そういうもんなのか。。。ちょっと面倒。

■ サンプルプログラム
import sqlite3

class CreateConnection(threading.Thread):
    connection = sqlite3.connect(':memory:')
    def __init__(self):
        threading.Thread.__init__(self)

    def run(self):
        sql = 'SELECT col1 from TEST_TABLE'
        self.connection.cursor().execute(sql)

if __name__ == '__main__':
    sql = "CREATE TABLE TEST_TABLE ( col1 INTEGER );"
    sqlite3.connect(':memory:').cursor().execute(sql)
    CreateConnection().start()

コメント

このブログの人気の投稿

slackでgeneralの投稿を全削除する

Google location history(JSON形式)をCSVファイルにする