Python 使用pandas to_sql和pyhive替换表时执行失败-DatabaseError:“…”;。。。并非所有参数都在字符串格式化过程中转换;
我需要用新的熊猫数据框替换蜂巢中的表。我正在使用pyhive创建一个连接引擎,随后使用pandas.to_sql并将“if_exists”作为替换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
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。有关更多信息,请参阅。感谢您的澄清,这纠正了问题。感谢您的澄清,这纠正了问题。