gpt4 book ai didi

python - Pandas DataFrame.to_sql() 错误 - 并非所有参数都在字符串格式化期间转换

转载 作者:太空狗 更新时间:2023-10-30 01:33:16 36 4
gpt4 key购买 nike

Python 版本 - 2.7.6

Pandas 版 - 0.17.1

MySQLdb 版本 - 1.2.5

DataFrame.to_sql() 抛出 pandas.io.sql.DatabaseError: Execution failed on sql 'SELECT name FROM sqlite_master WHERE type='table' AND name=?;':并非所有参数都在字符串格式化期间转换

Python 代码片段

con = MySQLdb.connect('localhost', 'root', '', 'product_feed')
cur = con.cursor()
cur.execute("SELECT VERSION()")
connection_result = cur.fetchall()
print connection_result[0][0] #It prints 5.5.44-0ubuntu0.14.04.1

table_column = ['A', 'B', 'C']
created_data = numpy.array([numpy.arange(10)]*3).T
df = pandas.DataFrame(data=created_data ,columns=table_column)
df.to_sql('test_table', con)

错误出现在执行 df.to_sql('test_table', con) 行时。

错误详情

  File "/home/yogi/yogi/mlPython/product_feed/etl_pf/process_data.py", line 298, in render_df
df.to_sql('test_table', con)
File "/home/yogi/yogi/mlenv/local/lib/python2.7/site-packages/pandas/core/generic.py", line 1003, in to_sql
dtype=dtype)
File "/home/yogi/yogi/mlenv/local/lib/python2.7/site-packages/pandas/io/sql.py", line 569, in to_sql
chunksize=chunksize, dtype=dtype)
File "/home/yogi/yogi/mlenv/local/lib/python2.7/site-packages/pandas/io/sql.py", line 1640, in to_sql
table.create()
File "/home/yogi/yogi/mlenv/local/lib/python2.7/site-packages/pandas/io/sql.py", line 685, in create
if self.exists():
File "/home/yogi/yogi/mlenv/local/lib/python2.7/site-packages/pandas/io/sql.py", line 673, in exists
return self.pd_sql.has_table(self.name, self.schema)
File "/home/yogi/yogi/mlenv/local/lib/python2.7/site-packages/pandas/io/sql.py", line 1653, in has_table
return len(self.execute(query, [name,]).fetchall()) > 0
File "/home/yogi/yogi/mlenv/local/lib/python2.7/site-packages/pandas/io/sql.py", line 1554, in execute
raise_with_traceback(ex)
File "/home/yogi/yogi/mlenv/local/lib/python2.7/site-packages/pandas/io/sql.py", line 1543, in execute
cur.execute(*args)
File "/home/yogi/yogi/mlenv/local/lib/python2.7/site-packages/MySQLdb/cursors.py", line 187, in execute
query = query % tuple([db.literal(item) for item in args])
pandas.io.sql.DatabaseError: Execution failed on sql 'SELECT name FROM sqlite_master WHERE type='table' AND name=?;': not all arguments converted during string formatting

I checked that pandas 0.17.1 is mostly using .format() so this error should not arise because of % formatting.

如果有人可以提出一些解决方法,那将是非常有帮助的。我不想用 cursor.execute()

尝试这个

最佳答案

参数:

con : SQLAlchemy 引擎或 DBAPI2 连接(传统模式)

使用 SQLAlchemy 可以使用该库支持的任何数据库。如果是 DBAPI2 对象,则仅支持 sqlite3。

flavor : 'sqlite', 默认无

自 0.19.0 版起已弃用:如果不使用 SQLAlchemy,“sqlite”是唯一受支持的选项。

如果你使用 SQLAlchemy 而不是 MySQLdb 就没问题。

关于python - Pandas DataFrame.to_sql() 错误 - 并非所有参数都在字符串格式化期间转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34734058/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com