我正在尝试将数据从 pandas 数据帧加载到 IBM DB2 数据仓库环境。该表已经存在,所以我只是将行附加到表中。我已经构建了数据框来准确地镜像表中的每个字段。
我正在使用 Pandas to_sql 方法尝试将数据框数据获取到表中。我已经知道我已连接到数据库,但是当我运行代码时,我收到以下错误:
AttributeError: 'function' object has no attribute 'cursor'
我在 pandas 文档中没有看到任何关于在使用 to_sql 时必须定义游标的内容。任何帮助,将不胜感激。
我尝试编写直接 sql insert 语句而不是使用 to_sql 但也无法使其正常工作。我已经有一个 to_csv 方法,我正在将数据帧写入 csv 文件,所以我想只使用相同的数据帧插入到表中。
我不能添加太多代码,因为这是一个公司项目,但该表有 15 列具有不同的数据类型(十进制、字符、时间戳)。
这是我的 to_sql 语句:
`output_df.to_sql(name='PD5', con=self.db2_conn, schema='REBTEAM', if_exists='append', index=False)`
我希望表格中加载了行。我正在使用的测试文件有 880 行,所以我希望该表有 880 行。
这是我收到的整个错误消息:
Warning (from warnings module):
File "C:\Users\dt24358\lib\site-packages\pandas\core\generic.py", line 2531
dtype=dtype, method=method)
UserWarning: The spaces in these column names will not be changed. In pandas versions < 0.14, spaces were converted to underscores.
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\dt24358\lib\tkinter\__init__.py", line 1705, in __call__
return self.func(*args)
File "C:\Users\dt24358\Scripts\Pricing Tool\Rebate_GUI_SQL.py", line 100, in <lambda>
command= lambda: self.submit_click(self.path, self.fileName, self.save_location, self.request_var.get(), self.execution_var.get(),self.dt_user_id, self.rebateAggregator))
File "C:\Users\dt24358\Scripts\Pricing Tool\Rebate_GUI_SQL.py", line 210, in submit_click
output_df.to_sql(name='PD5', con=self.db2_conn, schema='REBTEAM', if_exists='append', index=False)
File "C:\Users\dt24358\lib\site-packages\pandas\core\generic.py", line 2531, in to_sql
dtype=dtype, method=method)
File "C:\Users\dt24358\lib\site-packages\pandas\io\sql.py", line 460, in to_sql
chunksize=chunksize, dtype=dtype, method=method)
File "C:\Users\dt24358\lib\site-packages\pandas\io\sql.py", line 1546, in to_sql
table.create()
File "C:\Users\dt24358\lib\site-packages\pandas\io\sql.py", line 572, in create
if self.exists():
File "C:\Users\dt24358\lib\site-packages\pandas\io\sql.py", line 560, in exists
return self.pd_sql.has_table(self.name, self.schema)
File "C:\Users\dt24358\lib\site-packages\pandas\io\sql.py", line 1558, in has_table
return len(self.execute(query, [name, ]).fetchall()) > 0
File "C:\Users\dt24358\lib\site-packages\pandas\io\sql.py", line 1426, in execute
cur = self.con.cursor()
AttributeError: 'function' object has no attribute 'cursor'