Создание базы данных 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
Может кто-нибудь, пожалуйста, скажите мне правильный способ сделать это.
Благодаря
Ответы
Ответ 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, проверьте, чтобы этот файл получил правильную регистрационную информацию. Это очень удобно.