ich mit dem folgenden Code in Python gerade arbeitete, eine PostgreSQL-Abfrage mit subprocess
Aufruf:Python Syntax: Subprocess Aufruf PostgreSQL Query "Fehler: Nur ASCII-Zeichen erlaubt"
import subprocess
claimer_name = 'a_name'
startdate = '2014-04-01'
enddate = '2018-04-01'
data = subprocess.check_output(['/usr/bin/psql -U user_name "SELECT c.asset_id, c.video_id,
c.claim_id, c.claim_date FROM db.claim c JOIN db.claim_history h ON c.claim_id = h.claim_id JOIN
db.users_email e ON LOWER(e.email) = LOWER(h.email) JOIN m.auth_user u ON e.user_id = u.id WHERE
h.list_order = 1 AND c.claim_origin = ‘Descriptive Search’ AND c.claim_date >= \"%s\" AND
c.claim_date < \"%s\" AND concat(u.first_name, concat(chr(32),
u.last_name)) = \"%s\""' % (startdate, enddate, claimer_name)], shell=True)
Wie kann ich die einzigen entweichen kann zitiert um 'Deskriptive Suche'? Das Ausführen dieses Code as-ist der Fehler gibt Only ASCII characters are allowed in an identifier.
ich versucht habe:
[''Descriptive Search'']
[\'Descriptive Search\']
[""Descriptive Search""]
[concat('Descriptive', concat(chr(32), 'Search'))]
und Zuweisen einer Variable: i = 'Descriptive Search'
, und dann c.claim_origin = \"%s\"
.
Jedoch ergeben diese Versuche die gleichen ASCII characters
Fehler. String-Formatierung unter Verwendung arbeitet für meine andere Variablen in Ordnung (startdate
, enddate
, claimer_name
) und ich bin ratlos, warum es nicht funktioniert, für die Zeichenfolge ‚Beschreibende Search‘.
Mit PostgreSQL 9.3.
Jede Hilfe oder Punkte in die richtige Richtung wäre toll; Vielen Dank!
Egad. Es gibt so viele mögliche Fehlerquellen. Bitte tu dir selbst einen Gefallen und verwende eine PostgreSQL-Treiberbibliothek für Python, etwa [Psycopg2] (https://wiki.postgresql.org/wiki/Psycopg2_Tutorial). Durch die Shell zu gehen, muss dir Kopfschmerzen bereiten, wenn es nicht schon passiert ist. Und während du dabei bist, lies über kleine [Bobby Tables] (http://bobby-tables.com/). – Amadan
Danke, @Amadan Großartiger Vorschlag - ich werde einen Blick darauf werfen. Danke auch für den Link. – Daniel
+1 für ** zeigt Ihren Code ** und den ** genauen Fehlertext **. Gut für dich. Bitte fügen Sie in Zukunft auch die PostgreSQL-Version hinzu, aber +1 gute Frage. –