1

私は本当にイライラする問題を抱えています

sqlite3.Connectionオブジェクトへのカーソルを受け取り、データベースを変更する関数があります

私のコードは次のようなものです:

#DOES NOT WORK
def update(dbc, tableName, value, value2):
    dbc.execute("update ? set MyValue = ? where Something = ?;",\
    [tableName, value, value2])

#WORKS
def update2(dbc, tableName value, value2):
    dbc.execute("update {0} set MyValue = {1} where Something = {2};".format(
    tableName, value, value2))

db = sqlite3.connect('data.db')
c = db.cursor()
c.execute("begin;")
update(c,"Something","Something Else") #FAILS
update2(c,"Something","Something Else") #OK

エラーが発生します:

sqlite3.OperationalError:「?」の近く:構文エラー

最初のexecute( "begin;")ステートメントはよくわからないのでコメントアウトしてみましたが、すべての入力をコミットする代わりに、他の部分でコードが劇的に高速化されることはわかっています。なぜこれが起こっているのか誰かが手がかりを持っていますか?

4

1 に答える 1

0

何時間も検索した後、次の10分で答えが見つかると考えています。この方法でテーブル名をロードすることはできません...ばかげているようです。元の答えへのリンクは次のとおりです: SQLiteパラメータ置換の問題

于 2012-09-12T22:03:52.267 に答える