【发布时间】:2018-07-27 19:53:52
【问题描述】:
我正在尝试使用 SQLalchemy.create_engine() 连接到 Netezza。我想使用 SQLAlchmey 的原因是因为我希望能够通过 pandas 数据框进行读写。
工作原理如下:
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
【问题讨论】:
标签: python python-3.x postgresql psycopg2 netezza