Подтвердить что ты не робот

Создание базы данных postgresql с использованием psycopg2

Я пытаюсь создать базу данных postgres с помощью python script. Некоторые исследования показали, что использование модуля psycopg2 может быть способом сделать это. Я установил его и внес необходимые изменения в файл pg_hba.conf. Я использовал следующий код для создания БД:

#!/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()

Я попытался заменить con = connect(user='nishant', host = 'localhost', password='everything') на con = connect(user='nishant', password='everything')

Но я получаю следующую ошибку:

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

Может кто-нибудь, пожалуйста, скажите мне правильный способ сделать это. Благодаря

4b9b3361

Ответ 1

Клиент PostgreSQL подключается к базе данных, названной в честь пользователя по умолчанию. Вот почему вы получаете ошибку FATAL: database "nishant" does not exist.

Вы можете подключиться к системной базе данных по умолчанию postgres, а затем выполнить запрос для создания новой базы данных.

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

Убедитесь, что ваш пользователь nishant имеет разрешение на создание баз данных.

Изменить: Кстати, проверьте файл ~/.pgpass, чтобы безопасно хранить пароль, а не в исходном коде (http://www.postgresql.org/docs/9.2/static/libpq-pgpass.html). libpq, postgresql client librairy, проверьте, чтобы этот файл получил правильную регистрационную информацию. Это очень удобно.