从 Redshift 查询时无法识别配置参数“standard_conforming_strings”

Pra*_*lli 6 python linux sqlalchemy psycopg2 amazon-redshift

我正在尝试在 Linux 环境中使用 Sqlalchemy 连接到我的 redshift 集群,但我面临以下问题。

from sqlalchemy import create_engine
import pandas as pd
conn = create_engine('postgresql://connection string')
data_frame = pd.read_sql_query("SELECT * FROM schema.table", conn)
Run Code Online (Sandbox Code Playgroud)

sqlalchemy.exc.ProgrammingError:(psycopg2.errors.UndefinedObject)无法识别的配置参数“standard_conforming_strings”

我真的不明白这是什么问题。它在 Windows 中运行得非常好。

PS:不确定这是否有什么区别,但我在 Linux 机器上安装了 psycopg2-binary,与 Windows 上的 psycopg2 形成鲜明对比。

编辑

1、pyscopg2在windows下的版本是2.9.3,在linux下pyscopg2-binary的版本是2.9.6

  1. Sqlalchemy在windows中的版本是1.4.39,在linux中是2.0.16

Sim*_*imm 6

使用 pyscopg2 连接到 redshift 现在已经过时了。

对于直接连接,请使用 redshift_connector - 请参阅https://docs.aws.amazon.com/redshift/latest/mgmt/python-connect-examples.html

import redshift_connector
conn = redshift_connector.connect(
     host='examplecluster.abc123xyz789.us-west-1.redshift.amazonaws.com',
     database='dev',
     port=5439,
     user='awsuser',
     password='my_password'
  )
Run Code Online (Sandbox Code Playgroud)

对于 sqlAlchemy 使用 redshift_connect 和 sqlalchemy-redshift - 请参阅https://aws.amazon.com/blogs/big-data/use-the-amazon-redshift-sqlalchemy-dialect-to-interact-with-amazon-redshift/

import sqlalchemy as sa
from sqlalchemy.engine.url import URL

# build the sqlalchemy URL
url = URL.create(
drivername='redshift+redshift_connector', # indicate redshift_connector driver and dialect will be used
host='<clusterid>.xxxxxx.<aws-region>.redshift.amazonaws.com', # Amazon Redshift host
port=5439, # Amazon Redshift port
database='dev', # Amazon Redshift database
username='awsuser', # Amazon Redshift username
password='<pwd>' # Amazon Redshift password
)

engine = sa.create_engine(url)
Run Code Online (Sandbox Code Playgroud)


Pra*_*lli 0

我根据@Adrian 的评论找到了答案。刚刚将 Linux 环境中的 Sql alchemy 版本更改为我在 Windows 上的版本,现在它可以工作了。

  • 通过额外的支持信息可以改进您的答案。请[编辑]添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以[在帮助中心](/help/how-to-answer)找到有关如何写出好的答案的更多信息。 (4认同)