2017-10-11 8 views
0

J'ai utilisé psycopg2 pour créer une erreur de base de données, des erreurs grammaticales, mais dans les premières lignes en utilisant la même grammaire est le travail, pourquoi demander? Deux lignes de code, pourquoi la deuxième ligne d'erreurs grammaticales?base de données psycopg creata a échoué, erreur de syntaxe

[code]

db_name = 'series_id' 
self._cur_root.execute("CREATE DATABASE '%s' owner %s ;" % (db_name, self.username)) 

[error]

syntax error at or near "'series_id'" 
LINE 1: CREATE DATABASE 'series_id' owner postgres ; 
+0

Etes-vous sûr d'avoir besoin de guillemets autour du nom de la base de données? –

Répondre

1

de code, supprimer cotes de% s:

self._cur_root.execute("CREATE DATABASE %s owner %s ;" % (db_name, self.username)) 
1

PostgreSQL utilise des guillemets simples pour les chaînes et double pour littéraux et les noms qui pourraient être mal interprétés ou contenir des majuscules. Si vous devez citer un nom, essayez:

' CREATE DATABASE "%s" OWNER "%s"; ' % .... 

Ici, vous rendez votre demande manuellement. Généralement, il est préférable d'utiliser la fonction du pilote de base de données pour substituer les valeurs - ils font un devis correct et empêchent les injections SQL.