marcopagot
@marcopagot (Asuka)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

一生データサイエンス100本ノックが出来ず悲しみに打ちひしがれています。part2

解決したいこと

データサイエンス100本ノックをやりたい。

現状)
記事を拝見頂きありがとうございます。
機械学習初学者です。かれこれ半年以上、100本ノックが出来ず
悲しみに打ちひしがれ、干からびる寸前のしがないサラリーマンです。
さて、前回から(前の記事)少し進みお陰様であと少しの所で100本ノックが出来そうな所まできました。
下記エラーをご確認いただきたいです。

入力

import os
import pandas as pd
import numpy as np
from datetime import datetime, date
from dateutil.relativedelta import relativedelta
import math
import psycopg2
from sqlalchemy import create_engine
from sklearn import preprocessing
from sklearn.model_selection import train_test_split
from imblearn.under_sampling import RandomUnderSampler

pgconfig = {
    'host': 'localhost',
    'port': '5432',
    'database': 'dsdojo_db',
    'user': 'postgres',
    'password': 'postgres12345',
}

# pd.read_sql用のコネクタ
conn = psycopg2.connect(**pgconfig)

df_customer = pd.read_sql(sql='select * from customer', con=conn)
df_category = pd.read_sql(sql='select * from category', con=conn)
df_product = pd.read_sql(sql='select * from product', con=conn)
df_receipt = pd.read_sql(sql='select * from receipt', con=conn)
df_store = pd.read_sql(sql='select * from store', con=conn)
df_geocode = pd.read_sql(sql='select * from geocode', con=conn)

エラー)

OperationalError                          Traceback (most recent call last)
<ipython-input-34-1d34bc0bd552> in <module>
     20 
     21 # pd.read_sql用のコネクタ
---> 22 conn = psycopg2.connect(**pgconfig)
     23 
     24 df_customer = pd.read_sql(sql='select * from customer', con=conn)

~/opt/anaconda3/lib/python3.8/site-packages/psycopg2/__init__.py in connect(dsn, connection_factory, cursor_factory, **kwargs)
    120 
    121     dsn = _ext.make_dsn(dsn, **kwargs)
--> 122     conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
    123     if cursor_factory is not None:
    124         conn.cursor_factory = cursor_factory

OperationalError: FATAL:  role "postgres" does not exist

また、知り合いにlocalhostの所をdbにしてみてはとのアドバイスを頂いたのでdbに変更して入力したところ。

エラー)

OperationalError                          Traceback (most recent call last)
<ipython-input-35-6d8be1c5d4ec> in <module>
     20 
     21 # pd.read_sql用のコネクタ
---> 22 conn = psycopg2.connect(**pgconfig)
     23 
     24 df_customer = pd.read_sql(sql='select * from customer', con=conn)

~/opt/anaconda3/lib/python3.8/site-packages/psycopg2/__init__.py in connect(dsn, connection_factory, cursor_factory, **kwargs)
    120 
    121     dsn = _ext.make_dsn(dsn, **kwargs)
--> 122     conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
    123     if cursor_factory is not None:
    124         conn.cursor_factory = cursor_factory

OperationalError: could not translate host name "db" to address: nodename nor servname provided, or not known

上記のようなエラーが出ました。

自分で試したこと

そもそも、dockerの仕組みや使い方を理解していないのと、postgresとはなんぞやということを深く理解できていない為
場当たり的な解決しかできておらず、小生の知識・勉強不足のせいだと実感しております。

解決方法をご存知の方、何卒ご教示の程宜しくお願い致します。

ps.dockerは下記画像のように動いております。
スクリーンショット 2021-10-18 16.04.47.png

0

1Answer

また、知り合いにlocalhostの所をdbにしてみてはとのアドバイスを頂いたのでdbに変更して入力したところ。

localhostは自身を表すホスト名です。
同一環境内のPostgreSQLに接続するのであれば、変更する必要は無いと思います。

OperationalError: FATAL:  role "postgres" does not exist

というエラーが出ていますので、PostgreSQLに"postgres"というユーザ(ロール)が存在しないのだと思われます。

一応気になるIssueがありましたので貼っておきます。
https://github.com/The-Japan-DataScientist-Society/100knocks-preprocess/issues/1#issue-640590032

1Like

Comments

  1. @marcopagot

    Questioner

    Yamazinさん
    コメントありがとうございます🙇‍♂️
    また、issueの提示までして頂きありがとうございます。
    拝見させて頂いたのですが、私自身の環境がmac appleシリコンチップの為
    クローニングの問題ではないかなと思います、、、

Your answer might help someone💌