首页 > 解决方案 > 为什么我使用 sqlalchemy hive 时出现错误?

问题描述

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()

这是我的代码制作熊猫数据框,保存到蜂巢表

但是当我运行代码时,我收到了这样的错误消息

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)

实际上我不知道为什么,结果只有一个数据帧保存在 hive 表中

如果有人知道原因请教我谢谢

标签: pythonhivesqlalchemy

解决方案


请为批量插入添加 method='multi'

df.to_sql("table_name", con = engine,index=False,method='multi')


推荐阅读