2017-08-21 21 views
1

ich diese grundlegende SQL-Datei haben:python3 - psycopg2 - Ausführung von SQL-Datei

CREATE TABLE `app_users` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `email` varchar(200) DEFAULT NULL, 
    `password` varchar(200) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

und wollen es über Python ausführen:

connect_str = "dbname='dbname' user='user' host='192.168.1.101' password='password'" 
conn = psycopg2.connect(connect_str) 
cursor = conn.cursor() 

fd = open('file.sql', 'r') 
sqlFile = fd.read() 
fd.close() 
sqlCommands = sqlFile.split(';') 
for command in sqlCommands: 
    print(command) 
    if command.strip() != '': 
     cursor.execute(command) 

Wenn ich ausführen dies über "python3 app.py" es verbindet, aber bekomme ich nur:

psycopg2.ProgrammingError: syntax error at or near "`" 
LINE 1: CREATE TABLE `app_users` (

aber ich habe keine Ahnung, warum .. jemand mir mit diesem Problem helfen könnte?

Dank und Grüße

+0

Ich schlage vor, in der Art von Zitat suchen Sie verwenden. Dies 'ist anders' und jede Programmiersprache wird verschiedene Möglichkeiten haben, sie zu interpretieren, zu parsen und zu entkommen. –

+0

Normalerweise verwende ich \, um das in Anführungszeichen gesetzte Zeichen zur Ausführung von sql in Python zu umgehen. So etwas wie diese CREATE TABLE \ 'app_users \' (... – Alam

+0

ich ersetzte 'mit 'und \. Beide ergeben in der gleichen Fehler. –

Antwort

1

Verwenden Sie die richtige Postgresql Syntax:

CREATE TABLE app_users (
    id serial, 
    email varchar(200), 
    password varchar(200), 
    primary key (id) 
) 
Verwandte Themen