web-dev-qa-db-fra.com

Création d'une base de données postgresql à l'aide de psycopg2

J'essaie de créer une base de données postgres en utilisant un script python. Certaines recherches ont montré que l'utilisation du module psycopg2 pourrait être un moyen de le faire. Je l'ai installé et j'ai apporté les modifications requises dans le _pg_hba.conf_ fichier. J'ai utilisé le code suivant pour créer la base de données:

_#!/usr/bin/python
# -*- coding: utf-8 -*-

from psycopg2 import connect
import sys
from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT

con = None
con = connect(user='****', Host = 'localhost', password='****')

dbname = "voylla_production1710"

con.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT)
cur = con.cursor()
cur.execute('CREATE DATABASE ' + dbname)
cur.close()
con.close()
_

J'ai essayé de remplacer con = connect(user='nishant', Host = 'localhost', password='everything') par con = connect(user='nishant', password='everything')

Mais j'obtiens l'erreur suivante:

_con = connect(user='nishant', Host = 'localhost', password='everything') 
 File "/usr/lib/python2.7/dist-packages/psycopg2/__init__.py", line 179, in connect
connection_factory=connection_factory, async=async)
 psycopg2.OperationalError: FATAL:  database "nishant" does not exist
_

Quelqu'un pourrait-il me dire la bonne façon de procéder? Merci

44
nish

Le client de PostgreSQL se connecte par défaut à une base de données nommée d'après l'utilisateur. C'est pourquoi vous obtenez l'erreur FATAL: database "nishant" does not exist.

Vous pouvez vous connecter à la base de données système par défaut postgres, puis émettre votre requête pour créer la nouvelle base de données.

con = connect(dbname='postgres', user='nishant', Host='localhost', password='everything')

Assurez-vous que votre utilisateur nishant est autorisé à créer des bases de données.

Edit: Au fait, consultez le fichier ~/.pgpass pour stocker le mot de passe en toute sécurité et non dans le code source ( http://www.postgresql.org/docs/9.2/static/libpq-pgpass.html ). libpq, la librairie client postgresql, recherchez ce fichier pour obtenir les informations de connexion appropriées. C'est très très pratique.

54
Nicolas