python - (psycopg2.OperationalError) 无效 - 操作码

标签 python python-3.x postgresql psycopg2 netezza

我正在尝试使用 SQLalchemy.create_engine() 连接到 Netezza。我想使用 SQLAlchmey 的原因是因为我希望能够通过 pandas dataframe 进行读写。

工作原理如下:

import pandas as pd
import pyodbc
conn = pyodbc.connect('DSN=NZDWW')
df2 = pd.read_sql(Query,conn)

以上代码运行良好。但是为了将 df 数据帧写入 Netezza,我需要使用函数 to_sql(),这需要 SQLAlchemy。这是我的代码的样子:

from sqlalchemy import create_engine
username = os.getenv('REDSHIFT_USER')
password = os.getenv('REDSHIFT_PASS')
DATABASE = "SHP_TARGET"
HOST = "Netezza1"
PORT = 5480
conn_str = "postgresql://"+username+":"+password+"@"+HOST+':'+str(PORT)+'/'+DATABASE
engine3 = create_engine(conn_str)
df = pd.read_sql(Query, engine3)

当我执行此操作时,出现以下错误:

OperationalError: (psycopg2.OperationalError) Invalid - opcode
Invalid - opcodeInvalid packet length (Background on this error at: http://sqlalche.me/e/e3q8)

任何线索将不胜感激。谢谢。

数据库:Netezza python 版本:3.6 操作系统:Windows

最佳答案

Postges 的 sqlalchemy 方言与 Netezza 不兼容。

您收到的错误是 psycopg2 模块,它促进了连接,基本上提示它无法理解服务器“说的话”。

appears to be a dialect for Netezza尽管。您可能想尝试一下。

关于python - (psycopg2.OperationalError) 无效 - 操作码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51564710/

相关文章:

Python:给定一个平面方程绘制属于它的点的子集

python - Click支持 "bunching"做空期权吗?

python - 根据时间列计算日期列中的值

sql - 在 Postgres 中将 Const Integer 转换为 Bigint

Python - 字典理解中的元组解包

python - 循环遍历元组列表以对每个元组发出 POST 请求

python - pandas DataFrame 可以保存非标量值吗?

python - 如何公开导入的组件?

php - Postgresql:准备交易

database - 如何更改 postgresql 9.4 中的日志目录位置?