为什么我在使用sqlalchemy配置单元时出错?

cbwuti44  于 2021-06-25  发布在  Hive
关注(0)|答案(2)|浏览(270)
import pandas as pd
from sqlalchemy import create_engine

host='user@127.0.0.1'
port=10000
schema ='result'
table='new_table'

engine = create_engine(f'hive://{host}:{port}/{schema}')
conn=engine.connect()
engine.execute('CREATE TABLE ' + table + ' (year int, GDP_rate int, GDP string)')
data = {
'year': [2017, 2018],
'GDP_rate': [31, 30],
'GDP': ['1.73M', '1.83M']
}

df = pd.DataFrame(data)
df.to_sql(name=table, con=engine,schema='result',index=False,if_exists='append',chunksize=5000)

conn.close()

这是我的代码使PandasDataframe保存到配置单元表
但是当我运行代码时,我得到了这样的错误信息

File "/opt/rh/rh-python36/root/usr/lib/python3.6/site-packages/pyhive/hive.py", line 380, in _fetch_more
raise ProgrammingError("No result set")
sqlalchemy.exc.ProgrammingError: (pyhive.exc.ProgrammingError) No result set
[SQL: INSERT INTO TABLE `result`.`new_table` VALUES (%(year)s, %(GDP_rate)s, %(GDP)s)]
[parameters: ({'year': 2017, 'GDP_rate': 31, 'GDP': '1.73M'}, {'year': 2018, 'GDP_rate': 30, 'GDP': 
'1.83M'})]
(Background on this error at: http://sqlalche.me/e/f405)

实际上我不知道为什么,结果只有一个Dataframe保存在配置单元表中
如果有人知道原因请教我谢谢

yws3nbqq

yws3nbqq1#

一只可能是 hive 里的虫子。看到了吗https://github.com/dropbox/pyhive/issues/250. 插入多行时会出现问题。

sr4lhrrt

sr4lhrrt2#

请为批量插入添加方法=“multi”
to\u sql(“表名称”,con=engine,index=false,method='multi')

相关问题