【发布时间】:2018-02-09 09:38:30
【问题描述】:
我在 docker 容器上运行 postgressql。我正在尝试通过 python 连接到 postgres 并显示下表是我用来连接到 postgres 的代码:
import psycopg2
conn_string = "host='192.168.99.100:15432' dbname='PREDICTIVE_DS_POSTGRESQL'
user='ds_user' password='ds_user'"
print("Connecting to database\n ->%s" % (conn_string))
conn = psycopg2.connect(conn_string)
cursor = conn.cursor()
print("Connected!\n")
然后我使用下面的 Python 代码来显示 postgres 中的现有表:
def table_exists(con, table_str):
exists = False
try:
cur = con.cursor()
cur.execute("select exists(select relname from pg_class where relname='"
+ table_str + "')")
exists = cur.fetchone()[0]
print("exists")
cur.close()
except psycopg2.Error as e:
print(e)
return exists
def get_table_col_names(con, table_str):
col_names = []
try:
cur = con.cursor()
cur.execute("select * from " + table_str + " LIMIT 0")
for desc in cur.description:
col_names.append(desc[0])
cur.close()
except psycopg2.Error as e:
print(e)
但是,它根本不起作用。它说它无法将翻译主机名“192.168.99.100:15432”连接到地址:未知主机。但是,容器已启动并正在运行,这就是主机名。此外,我不知道其余代码在连接后是否可以工作。
【问题讨论】:
-
主机名是192.168.99.100,需要单独指定端口。
-
试试这样的:
conn_string = "host=192.168.99.100 port=15432 dbname=PREDICTIVE_DS_POSTGRESQL" -
我已经改变了这样的代码: conn_string = psycopg2.connect(host="192.168.99.100", port:"15432", database="PREDICTIVE_DS_POSTGRESQL", user="ds_user", password= “ds_user”)。但是,问题仍然存在我收到无效的语法
-
尝试:conn_string = "host='
' dbname=' 连接' user=' ' password=' ' port=' ' " 和然后使用 - psycopg2.connect(conn_string) -
该行有相同的语法错误
标签: python postgresql docker