【发布时间】:2021-01-04 09:20:02
【问题描述】:
我正在从 api 读取 csv,并且能够将其流式传输到 pandas 数据帧中。
df = pd.read_csv(iterable_to_stream(reply.iter_content()),
skiprows=7,
dtype=str,
na_filter=False)
我检查了数据框,一切看起来都不错。然后想将该数据放入 Oracle 表中。它只有 65 行 VARCHAR2(100) 所以我这样做了
df.to_sql(name='KR_PERSON_DETAILS_CSV_PD',
con=db.engine,
index=False,
if_exists='append',
dtype={line: types.VARCHAR(100) for line in df.columns}
)
当我这样做时,我收到以下消息: sqlalchemy.exc.DatabaseError: (cx_Oracle.DatabaseError) ORA-01008: 并非所有变量都绑定
这怎么可能?该表是在我运行它时创建的,我仔细检查了所有列。
【问题讨论】:
-
你的连接字符串是什么?更改连接字符串可能会解决您的问题。类似的问题是here。
-
连接字符串是一个sqlalchemy引擎。 url =f"oracle+cx_oracle://user:password@{dsn}" self.engine = create_engine(url, echo=False, max_identifier_length=128)。它生成的 sql 看起来不错。
标签: python pandas oracle sqlalchemy