回答編集履歴

4 検証手順#2修正

tkanda

tkanda score 2335

2016/06/17 07:38  投稿

チェックポイントは2点あります。
0. 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 の動作確認
0. psql にユーザー'postgres'でログインする(Databaseは既定の 'postgres' にする)
0. `\l` でデータベース名の一覧を得る。ここに 'pdb' というデータベースが存在している場合、4へ進む。
0. 上記で 'pdb' が存在していない場合、 `create database pdb;` を実行。("CREATE DATABASE"と表示されれば成功)
0. `\connect pdb;` を実行し、現在のデータベースを pdb に変更。(プロンプトが "pdb=#" になる)
0. テスト用のテーブルを作成。`CREATE TABLE test (id serial PRIMARY KEY, age integer, name varchar);` ("CREATE TABLE"と表示されればOK)
0. `\d test;` を実行し、テーブルが正しく作成されたことを確認。(id, age, nameなどの列名と定義が表示されればOK)
0. `insert into test (age, name) values (20, 'Taro');` で一行追加。
0. `select * from test;` でデータを取得。(上記で追加した内容が表示されればOK)
上記が問題ない場合、PostgreSqlのインストールと設定は正常だと思います。
###(追記)検証手順 #2 - Python+Psycopg2 の動作確認
0. Python(Command line)を起動し、Pythonプロンプトに対して以下を実行する。
0. `>>> import psycopg2`
0. `>>> db=psycopg2.connect(database="pdb", host="localhost", user="postgres", password="postgresのパスワード")`
0. `>>> cursor=db.cursor()`
0. `>>> cursor.execute("select * from test;")` (この行が抜けてました!)  
0. `>>> cursor.fetchone()` (ここで検証手順 #1 で追加したデータが表示されればOK)
0. `>>> cursor.close()`
0. `>>> db.close()`
恐らく上記のどこかで失敗するのではないかと思います。
もし、これらの手順がすべて成功する場合、現在のスクリプトファイルの内容が、(転記ミスなどにより)質問欄に書かれている内容と違っている可能性が高いと思います。
3 サンプルをさらに修正

tkanda

tkanda score 2335

2016/06/15 16:09  投稿

チェックポイントは2点あります。
0. 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 の動作確認
0. psql にユーザー'postgres'でログインする(Databaseは既定の 'postgres' にする)
0. `\l` でデータベース名の一覧を得る。ここに 'pdb' というデータベースが存在している場合、4へ進む。
0. 上記で 'pdb' が存在していない場合、 `create database pdb;` を実行。("CREATE DATABASE"と表示されれば成功)
0. `\connect pdb;` を実行し、現在のデータベースを pdb に変更。(プロンプトが "pdb=#" になる)
0. テスト用のテーブルを作成。`CREATE TABLE test (id serial PRIMARY KEY, age integer, name varchar);` ("CREATE TABLE"と表示されればOK)
0. `\d test;` を実行し、テーブルが正しく作成されたことを確認。(id, age, nameなどの列名と定義が表示されればOK)
0. `insert into test (age, name) values (20, 'Taro');` で一行追加。
0. `select * from test;` でデータを取得。(上記で追加した内容が表示されればOK)
上記が問題ない場合、PostgreSqlのインストールと設定は正常だと思います。
###(追記)検証手順 #2 - Python+Psycopg2 の動作確認
0. Python(Command line)を起動し、Pythonプロンプトに対して以下を実行する。
0. `>>> import psycopg2`
0. `>>> db=psycopg2.connect(database="pdb", host="localhost", user="postgres", password="postgresのパスワード")`
0. `>>> cursor=db.cursor()`
0. `>>> cursor.fetchone()` (ここで検証手順 #1 で追加したデータが表示されればOK)
0. `>>> cursor.close()`  
0. `>>> db.close()`  
恐らく上記のどこかで失敗するのではないかと思います。
もし、これらの手順がすべて成功する場合、現在のスクリプトファイルの内容が、(転記ミスなどにより)質問欄に書かれている内容と違っている可能性が高いと思います。
2 サンプル修正

tkanda

tkanda score 2335

2016/06/15 16:06  投稿

チェックポイントは2点あります。
0. 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 の動作確認
0. psql に postgres ユーザーでログインする(Databaseは既定の 'postgres' にする)
0. psql にユーザー'postgres'でログインする(Databaseは既定の 'postgres' にする)
0. `\l` でデータベース名の一覧を得る。ここに 'pdb' というデータベースが存在している場合、4へ進む。
0. 上記で 'pdb' が存在していない場合、 `reate database pdb;` を実行。("CREATE DATABASE"と表示されれば成功)
0. 上記で 'pdb' が存在していない場合、 `create database pdb;` を実行。("CREATE DATABASE"と表示されれば成功)
0. `\connect pdb;` を実行し、現在のデータベースを pdb に変更。(プロンプトが "pdb=#" になる)
0. テスト用のテーブルを作成。`CREATE TABLE test (id serial PRIMARY KEY, age integer, name varchar);` ("CREATE TABLE"と表示されればOK)
0. `\d test;` を実行し、テーブルが正しく作成されたことを確認。(id, age, nameなどの列名と定義が表示されればOK)
0. `insert into test (age, name) values (20, 'Taro');` で一行追加。
0. `select * from test;` でデータを取得。(上記で追加した内容が表示されればOK)
上記が問題ない場合、PostgreSqlのインストールと設定は正常だと思います。
###(追記)検証手順 #2 - Python+Psycopg2 の動作確認
0. Python(Command line)を起動し、Pythonプロンプトに対して以下を実行する。
0. `>>> import psycopg2`
0. `>>> db=psycopg2.connect(database="pdb", host="localhost", user="postgres", password="postgresのパスワード")`
0. `>>> cursor=db.cursor()`
0. `>>> cursor.fetchone()` (ここで検証手順 #1 で追加したデータが表示されればOK)
恐らく上記のどこかで失敗するのではないかと思います。
もし、これらの手順がすべて成功する場合、現在のスクリプトファイルの内容が、(転記ミスなどにより)質問欄に書かれている内容と違っている可能性が高いと思います。
1 検証手順を追記

tkanda

tkanda score 2335

2016/06/15 16:04  投稿

チェックポイントは2点あります。
0. 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 の動作確認
0. psql に postgres ユーザーでログインする(Databaseは既定の 'postgres' にする)
0. `\l` でデータベース名の一覧を得る。ここに 'pdb' というデータベースが存在している場合、4へ進む。
0. 上記で 'pdb' が存在していない場合、 `reate database pdb;` を実行。("CREATE DATABASE"と表示されれば成功)
0. `\connect pdb;` を実行し、現在のデータベースを pdb に変更。(プロンプトが "pdb=#" になる)
0. テスト用のテーブルを作成。`CREATE TABLE test (id serial PRIMARY KEY, age integer, name varchar);` ("CREATE TABLE"と表示されればOK)
0. `\d test;` を実行し、テーブルが正しく作成されたことを確認。(id, age, nameなどの列名と定義が表示されればOK)
0. `insert into test (age, name) values (20, 'Taro');` で一行追加。
0. `select * from test;` でデータを取得。(上記で追加した内容が表示されればOK)
上記が問題ない場合、PostgreSqlのインストールと設定は正常だと思います。
###(追記)検証手順 #2 - Python+Psycopg2 の動作確認
0. Python(Command line)を起動し、Pythonプロンプトに対して以下を実行する。
0. `>>> import psycopg2`
0. `>>> db=psycopg2.connect(database="pdb", host="localhost", user="postgres", password="postgresのパスワード")`
0. `>>> cursor=db.cursor()`
0. `>>> cursor.fetchone()` (ここで検証手順 #1 で追加したデータが表示されればOK)
恐らく上記のどこかで失敗するのではないかと思います。
もし、これらの手順がすべて成功する場合、現在のスクリプトファイルの内容が、(転記ミスなどにより)質問欄に書かれている内容と違っている可能性が高いと思います。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る