sqlite3 でクエリのプレースホルダーを設定する方法はありますか? データベースで動作する関数がいくつかありますが、それらが mysql と sqlite の両方で動作することができれば、より満足できるでしょう。Mysql および Postgres python API は %s をプレースホルダーとして使用しますが、sqlite3 は代わりに疑問符を使用します。
データベース エンジンに関係なく、同じプレースホルダーを使用する方法を探しています。
ご協力いただきありがとうございます。
sqlite3 でクエリのプレースホルダーを設定する方法はありますか? データベースで動作する関数がいくつかありますが、それらが mysql と sqlite の両方で動作することができれば、より満足できるでしょう。Mysql および Postgres python API は %s をプレースホルダーとして使用しますが、sqlite3 は代わりに疑問符を使用します。
データベース エンジンに関係なく、同じプレースホルダーを使用する方法を探しています。
ご協力いただきありがとうございます。
paramstyle
グローバルの使用方法に関する以前のエラーを修正するために更新されました
使用する DB モジュールがPython データベース API 仕様 v2.0paramstyle
に従っている場合、次のいずれかであるモジュール グローバルを取得できます。
次に、モジュールで使用されるプレースホルダーを使用して SQL ステートメントを作成できます。次のようなことができます。
import sqlite3
paramstyle = sqlite3.paramstyle
if paramstyle == 'qmark':
ph = "?"
elif paramstyle == 'format':
ph = "%s"
else:
raise Exception("Unexpected paramstyle: %s" % paramstyle)
sql = "INSERT INTO foo VALUES (%(ph)s, %(ph)s, %(ph)s)" % { "ph" : ph }
基礎となるライブラリは をサポートしていないため%s
、手動で置き換える必要があります。paramstyle
代わりに、属性を確認して、クエリ内の別のプレースホルダーのすべてのインスタンスを適切な値に置き換える方が簡単な場合があります。