使用しているOS: Windows 10
使用しているPCのメーカー/NECLL550/k
関係するアプリケーション名/Python2.7.11
関係する機器の機種名/型番:postgresql-9.6.0-beta1-windows-x64.exe
エラーメッセージなど(原文のまま):psycopg2-2.6.1.win32-py2.7-pg9.4.4-release.exeからダウンロードインストールをいたしました。
この状況の中Pythonからpsycopg2をインポートしようとするとエラーになります。別の形で質問しましたがタイトルを変えて質問したほうが良いとのことでしたので改めて質問させていただきます。
postgresql-9.6はPATHも通しましてpostgresql listen_addresses='*'('localhost') log_desination='stderr'('stderr,csvlog,eventlog') log_line_prefix='%t'('%t') client_encoding=sql_ascil(sjis) pg_hba.confのパスワード認証は認証なしに設定しました。
postgresql-9.6はPATHはc:¥program Files¥PostgreSQL¥9.6¥binとなっています。
どこに問題があるのでしょうか?
test105.pyで保存したコードは
import psycopg2
if name == "main":
connector = psycopg2.connect(host="localhost",database="pdb",user="pgusr",password="pgpsw")
cursor = connector.cursor()
sql = "insert into test_table values('1','python')"
cursor.execute(sql)
sql = "insert into test_table values('2','パイソン')"
cursor.execute(sql)
sql = "insert into test_table values('3','ぱいそん')"
cursor.execute(sql)
connector.commit()
cursor.close()
connector.close()
エラーメッセージは
Traceback (most recent call last):
File "test105.py", line 7, in <module>
connector = psycopg2.connect(host="localhost",database="pdb",user="pgusr",password="pgpsw")
File "C:\Python27\lib\site-packages\psycopg2\init.py", line 164, in connect
conn = _connect(dsn, connection_factory=connection_factory, async=async)
psycopg2.OperationalError: could not connect to server: Connection refused (0x0000274D/10061)
Is the server running on host "localhost" (::1) and accepting
TCP/IP connections on port 5432?
could not connect to server: Connection refused (0x0000274D/10061)
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/07 03:07
回答1件
0
ベストアンサー
チェックポイントは2点あります。
- PostgreSQLが正常に起動されていることを確認する。
コマンドプロンプトで "netstat -anp tcp" を実行し、ローカルアドレスが "0.0.0.0:5432" で状態が "LISTENING" になっているソケットがあることを確認する。これが存在していない場合、PostgreSQLが起動されていないと考えられます。
0. PostgreSQL の接続受け入れインターフェースを確認する。
postgresql.conf ファイルの listen_addresses の記述がどのようになっているか確認しましょう。
listen_addresses=の後ろには、クライアントアプリケーションからの接続要求の受け入れを許可するネットワークインターフェースのIPアドレスが記載されています。(複数エントリーはカンマ区切り)
基本的にはここに 127.0.0.1(IPv4のローカルホストアドレス) と ::1(IPv6のローカルホストアドレス) が含まれている必要があります。
同じPC上で動作するPythonアプリケーションからの接続だけを許可し、他のPCからの接続を禁止する場合、listen_addresses=::1,127.0.0.1 とに定義します。
なお、すべてのネットワークインターフェースに対して接続受け入れを許可する場合、 listen_addresses=* と定義することができます。
ご参考になれば。
###(追記)検証手順 #1 - PostgreSql の動作確認
- psql にユーザー'postgres'でログインする(Databaseは既定の 'postgres' にする)
\l
でデータベース名の一覧を得る。ここに 'pdb' というデータベースが存在している場合、4へ進む。- 上記で 'pdb' が存在していない場合、
create database pdb;
を実行。("CREATE DATABASE"と表示されれば成功) \connect pdb;
を実行し、現在のデータベースを pdb に変更。(プロンプトが "pdb=#" になる)- テスト用のテーブルを作成。
CREATE TABLE test (id serial PRIMARY KEY, age integer, name varchar);
("CREATE TABLE"と表示されればOK) \d test;
を実行し、テーブルが正しく作成されたことを確認。(id, age, nameなどの列名と定義が表示されればOK)insert into test (age, name) values (20, 'Taro');
で一行追加。select * from test;
でデータを取得。(上記で追加した内容が表示されればOK)
上記が問題ない場合、PostgreSqlのインストールと設定は正常だと思います。
###(追記)検証手順 #2 - Python+Psycopg2 の動作確認
- Python(Command line)を起動し、Pythonプロンプトに対して以下を実行する。
>>> import psycopg2
>>> db=psycopg2.connect(database="pdb", host="localhost", user="postgres", password="postgresのパスワード")
>>> cursor=db.cursor()
>>> cursor.execute("select * from test;")
(この行が抜けてました!)>>> cursor.fetchone()
(ここで検証手順 #1 で追加したデータが表示されればOK)>>> cursor.close()
>>> db.close()
恐らく上記のどこかで失敗するのではないかと思います。
もし、これらの手順がすべて成功する場合、現在のスクリプトファイルの内容が、(転記ミスなどにより)質問欄に書かれている内容と違っている可能性が高いと思います。
投稿2016/06/07 04:04
編集2016/06/16 22:38総合スコア2425
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/07 04:49
2016/06/07 05:21
2016/06/10 03:14
2016/06/10 04:43 編集
2016/06/14 01:40
2016/06/14 22:49
2016/06/15 03:46
2016/06/15 04:16
2016/06/15 04:50
2016/06/15 05:00
2016/06/15 05:40
2016/06/15 06:35
2016/06/15 08:25
2016/06/15 12:30
2016/06/15 12:43
2016/06/16 00:20
2016/06/16 03:26
2016/06/16 03:57
2016/06/16 04:22
2016/06/16 04:54
2016/06/16 06:10
2016/06/16 06:38
2016/06/16 09:15 編集
2016/06/16 14:05
2016/06/16 21:47
2016/06/16 22:41
2016/06/17 01:48 編集
2016/06/17 02:00 編集
2016/06/17 02:45
2016/06/17 04:21
2016/06/17 05:11
2016/06/17 06:44
2016/06/17 07:29
2016/06/17 09:58
2016/06/18 00:04
2016/06/18 01:45
2016/06/18 01:45
2016/06/18 03:10
2016/06/18 05:36
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。