2017-11-28 1 views
0

Ich verwende Python 3.6 und psycopg2, um CSV-Dateien in eine Postgres-Datenbank hochzuladen. PostgreSQL ist nicht glücklich mit Zitaten und Paranthese in den Variablen. Gibt es eine intelligente Möglichkeit, solche Variablen in eine Datenbank einzufügen?psycopg2 Einfügen von Variablen mit Anführungszeichen und Klammern in Tabelle

var_list = ['p_pladser.3320', '1108', "Christian II's Allé", '1', 'nej', "Christian II's Allé", 'Ulige husnr.', 'Amager Vest', '', 'Uafmærket parkering', '2012-02-14T12:06:07', '2009-07-15T00:00:00', '', '37086', 'MULTILINESTRING ((12.60868230570311 55.65583969695316, 12.608588075325498 55.65581925066134))'] 

Ich habe versucht,

query = "INSERT INTO p_pladser (FID, vejkode, vejnavn, antal_pladser, restriktion, vejstatus, vejside, bydel, p_ordning, p_type, rettelsedato, oprettelsesdato, bemaerkning, id, wkb_geometry) VALUES %s" % repr(tuple(map(str,var_list))) 
dbcur.execute(query) 

und

query = "INSERT INTO p_pladser (FID, vejkode, vejnavn, antal_pladser, restriktion, vejstatus, vejside, bydel, p_ordning, p_type, rettelsedato, oprettelsesdato, bemaerkning, id, wkb_geometry) VALUES %s" % ','.join('?' * len(var_list)) 
cursor.execute(query, var_list) 

Beide Vorschläge von anderen post zu einer ähnlichen, aber einfaches Problem.

+0

Wie wäre es mit dem Lesen der Dokumentation? http://initd.org/psycopg/docs/usage.html#passing-parameters-to-sql-queries – piro

Antwort

-1

Ich fand heraus, dass Sie in SQL "durch Hinzufügen eines Extra" entkommen. Die Abfrage funktioniert jetzt, wenn ich nur folgendes mache.

# Replacing single quote with two single quotes 
var_list = [w.replace("'", "''") for w in var_list] 

# Adding the variables to query 
query = "INSERT INTO p_pladser (FID, vejkode, vejnavn, antal_pladser, restriktion, vejstatus, vejside, bydel, p_ordning, p_type, rettelsedato, oprettelsesdato, bemaerkning, id, wkb_geometry) VALUES (" + (', '.join("'" + item + "'" for item in row)) + ")" 

# Executing query     
dbcur.execute(query) 
+0

Mann, Sie müssen Witze machen, richtig? Lies die blutigen Dokumente oder ein paar Webcomics. – piro

+0

Das könnte man für die meisten Posts auf Stackoverflow sagen. –

Verwandte Themen