2017-10-18 112 views
0

从这个SQL workbench tutorial如何在SQL工作台中给定URI的psycopg2参数?

鉴于URI:

jdbc:redshift://sample.redshift.openbridge.io:5439/sample_database?ssl=true&sslfactory=com.amazon.redshift.ssl.NonValidatingFactory

此外,我需要的只是UsernamePassword连接到AWS上的红移服务器。

如果我使用Python中psycopg2,我需要下列领域建立与数据库的连接:

  • dbname
  • host
  • port
  • user
  • password

E.g.

import psycopg2 
con=psycopg2.connect(dbname= 'dbname', host='host', 
        port= 'port', user= 'user', password= 'pwd') 
con.connect() 

鉴于URI如上图所示,我计算这些值:

  • dbname = sample.redshift.openbridge.io
  • host = jdbc:redshift://
  • port = 5439
  • user =用户名来连接作为如SQL工作台
  • password =我的用户

密码,但我想我已经试图从URI分裂的价值观是错误的:对于psycopg2

import psycopg2 
dbname='sample.redshift.openbridge.io' 
host='jdbc:redshift' 
port=5439 
user='Username' 
password='Password' 
con=psycopg2.connect(dbname, host, port, user, password) 

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

什么是适当的值给出上面的URI的参数?

又如何ssl=truesslfactory=com.amazon.redshift.ssl.NonValidatingFactory设置和 sample_database数据库? 如何将它们设置为psycopg2中的con参数?

我的环境设置:

  • 的Mac OS X
  • 的Python 3
  • psycopg2.__version__ = 2.7.3。1(DT月PQ3分机lo64)

我已经得到它一起工作:

import psycopg2 
dbname='sample_database' 
host='sample.redshift.openbridge.io' 
port=5439 
user='Username' 
password='Password' 
con=psycopg2.connect(dbname, host, port, user, password) 

但我不知道这是为连接设置的SSL属性。

ssl=truesslfactory=com.amazon.redshift.ssl.NonValidatingFactory当我通过psycopg2以上述方式连接?

psycopg2自动设置jdbc:redshift作为协议吗?

+0

我想你'dbname'和'host'混合起来的值。 – helloV

+0

当我交换'dbname'和'host'的值时,我得到了'OperationalError:FATAL:database“jdbc:redshift”不存在'=( – alvas

+0

对Redshift不太了解,但是从URL来看,数据库是'sample_database'。 – helloV

回答

1

从网址:

jdbc:redshift://sample.redshift.openbridge.io:5439/sample_database?ssl=true&sslfactory=com.amazon.redshift.ssl.NonValidatingFactory

host: sample.redshift.openbridge.io 
port: 5439 
database: sample_database 
相关问题