48

Pythonスクリプトを使用してpostgres DBを作成しようとしています。一部の調査では、psycopg2 モジュールを使用することがその方法である可能性があることが示されました。私はそれをインストールし、pg_hba.confファイルに必要な変更を加えました。次のコードを使用して 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', 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

誰か正しいやり方を教えてください。ありがとう

4

1 に答える 1

59

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)。postgresql クライアント ライブラリである libpq は、このファイルをチェックして適切なログイン情報を取得します。とてもとても便利です。

于 2013-10-17T12:28:16.163 に答える