2013-10-17 21 views
26

私はpythonスクリプトを使ってpostgres DBを作成しようとしています。いくつかの研究では、psycopg2モジュールを使用することがその方法である可能性があることが示されています。私はそれをインストールし、pg_hba.confファイルに必要な変更を加えました。私は、DBを作成するには、次のコードを使用:psycopg2を使ったpostgresql DBの作成

#!/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', password='everything')

con = connect(user='nishant', host = 'localhost', 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 

誰かが私に権利を教えてもらえますそれを行う方法。 ありがとう

+0

'set_isolation_level'は私にそれを働かせるために必要なステップでした。 – wordsforthewise

答えて

35

PostgreSQLのクライアントは、デフォルトでユーザの名前を付けられたデータベースに接続します。 これは、FATAL:database "nishant" does not existというエラーが表示される理由です。

既定のシステムデータベースpostgresに接続し、クエリを発行して新しいデータベースを作成することができます。

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

は、あなたのnishantユーザーがデータベースを作成する権限を持っていることを確認してください。

編集:ところで、ソースコード(http://www.postgresql.org/docs/9.2/static/libpq-pgpass.html)ではなく、安全にパスワードを保存するために、〜/ .pgpassファイルをチェックアウトします。 libpq、postgresqlクライアントlibrairy、適切なログイン情報を得るためにこのファイルをチェックしてください。非常に便利です。

+0

ありがとう、あなたの編集と 'ALTER USER your_username CREATEDB;'はうまくいきました。 – nish

+0

助けてくれてありがとう:) – Nicolas

+7

+1〜〜/ .pgpass – AgDude

関連する問題