Python 使用pandas to_sql和pyhive替换表时执行失败-DatabaseError:“…”;。。。并非所有参数都在字符串格式化过程中转换;

Python 使用pandas to_sql和pyhive替换表时执行失败-DatabaseError:“…”;。。。并非所有参数都在字符串格式化过程中转换;,python,pandas,hive,sqlalchemy,Python,Pandas,Hive,Sqlalchemy,我需要用新的熊猫数据框替换蜂巢中的表。我正在使用pyhive创建一个连接引擎,随后使用pandas.to_sql并将“if_exists”作为替换 from pyhive import hive my_data = pd.read_csv('my_data.csv') conn = hive.Connection(host="111.11.11.11", port=10000, username="abcd") my_data.to_sql(name

我需要用新的熊猫数据框替换蜂巢中的表。我正在使用pyhive创建一个连接引擎,随后使用pandas.to_sql并将“if_exists”作为替换

from pyhive import hive

my_data = pd.read_csv('my_data.csv')

conn = hive.Connection(host="111.11.11.11", port=10000, username="abcd")

my_data.to_sql(name='table_name', con=conn, if_exists='replace', schema='my_schema')

conn.close()
但是,这会导致以下意外错误:

DatabaseError: Execution failed on sql: SELECT name FROM sqlite_master WHERE type='table' AND name=?;
not all arguments converted during string formatting
unable to rollback
其他答案似乎表明,这与sql期望一个SqlAlchemy引擎有关——我的印象是,这就是pyhive用来创建连接的东西。如能提供有关如何正确执行此命令的任何指导,将不胜感激

值得注意的是,在其他地方,同样的连接从Hive读取数据没有问题

按预期工作:

conn = hive.Connection(host="111.11.11.11", port=10000, username="abcd")

my_data = pd.read_sql('select * from my_table', conn)

conn.close()
其他答案似乎表明,这与sql期望一个SqlAlchemy引擎有关——我的印象是,这就是pyhive用来创建连接的东西

PyHive可以创建SQLAlchemy
引擎
对象,但不能按您的方式创建。如中所示,您需要执行以下操作

engine=create\u engine('hive://localhost:10000/default')
然后将
引擎
对象传递到
到_sql

[read_sql]按预期工作

read\u-sql
通常只与DBAPI连接一起使用,但是
到\u-sql
需要一个SQLAlchemy
可连接的(
引擎
连接
),因为它可能需要生成DDL。有关更多信息,请参阅

其他答案似乎表明,这与sql期望一个SqlAlchemy引擎有关——我的印象是,这就是pyhive用来创建连接的东西

PyHive可以创建SQLAlchemy
引擎
对象,但不能按您的方式创建。如中所示,您需要执行以下操作

engine=create\u engine('hive://localhost:10000/default')
然后将
引擎
对象传递到
到_sql

[read_sql]按预期工作


read\u-sql
通常只与DBAPI连接一起使用,但是
到\u-sql
需要一个SQLAlchemy
可连接的(
引擎
连接
),因为它可能需要生成DDL。有关更多信息,请参阅。

感谢您的澄清,这纠正了问题。感谢您的澄清,这纠正了问题。