我正在尝试使用 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/