sqlite3
akzeptiert qmark und wird als Parameterbindungsformate benannt, akzeptiert jedoch nicht die in PEP249 [^ 1] [^ 2] [^ 3] definierten Formate und Pyformatformate. Dies ist das Modul, das sie akzeptiert.
Python-Versionen wurden mit 2.7.8 und 3.4.1 getestet.
pip install sqlite3paramstyle
Es bindet an den Teil von % s
.
conn = sqlite3paramstyle.connect(":memory:")
cur = conn.cursor()
cur.execute("select %s, %s", ("foo", "bar"))
cur.fetchall() # [("foo", "bar")]
Es unterstützt auch das erweiterte Python-Format.
cur.execute("select %(who)s, %(age)s", {"who": "John", "age": 20})
cur.fetchall() # [("John", 20)]$
Ich hoffe es hilft irgendwo jemandem: Bier:
Ich sollte Python-Code fast ohne Testcode pflegen und Tests leise hinzufügen, aber ich fand Python-Code, der "psycopg2" live verwendet. Ich wollte definitiv "SQL Alchemy" verwenden, aber es war eine schwierige Phase, die abhängigen Module zu ändern, und so beschloss ich, nicht so viel wie möglich zu ändern.
Ich wollte nicht, dass der Postgresql-Prozess die ganze Zeit auf dem CI-Server ausgeführt wird, und die DB-Verbindung hatte eine Form, die von außen übergeben werden konnte. Daher habe ich beim Testen versucht, die Verbindung von "sqlite3" zu übergeben und auszuführen.
Die von "psycopg2" akzeptierten Parameterstile sind jedoch die oben beschriebenen Format- und Pyformatformate, die mit "sqlite3" vollständig nicht kompatibel sind.
Ich habe qmarkpg gefunden, das psycopg2
erweitert, um qmark-Stile zu akzeptieren. Warum also nicht ein Modul schreiben, das in die entgegengesetzte Richtung funktioniert? Sobald ich dachte.
Glücklich, ein PyPI-Autor zu sein: smiley_cat: Wow Wow
Recommended Posts