【问题标题】:Python - Insert from select - Fom Pandas using cursorPython - 从选择中插入 - 使用光标的 Fom Pandas
【发布时间】:2020-08-17 04:09:51
【问题描述】:

我正在尝试将我的数据框中的记录插入存储在 Hive 集群上的现有表中。我无法使用 sqlalchemy 引擎,因为我使用的是 JDBC 连接。

我的代码是:

cursor = conn.cursor()
engine = sqlalchemy.create_engine('driver://', creator=conn)
dff = pd.DataFrame([[1, 2], ['process 1', 'process 2']], columns=['id', 'description'])
sql_query = "INSERT INTO default.my_table SELECT * FROM {0}".format(dff)
#dff.to_sql(name='my_table', schema='default', con=engine.connect(), if_exists='append')#I also tried this but it gives me error: 'Connection' object is not callable
cursor.execute(sql_query)

我更喜欢用户 INSERT INTO SELECT,因为 INSERT INTO VALUES 因为我的数据中的架构可以在未来发生变化,并且有了这种依赖关系,我只需要更改我的数据库表。

使用我当前的代码,我得到了这个:

CAUSED BY: Exception: Syntax error

我该如何解决我的问题?

【问题讨论】:

    标签: python pandas sqlalchemy jaydebeapi


    【解决方案1】:

    dff 是一个对象,而不是字符串。你必须像这样cursor.executemany(your_sql_statement, column_1, column_2, column_n)

    【讨论】:

    • 我正在尝试这个: cursor.executemany("INSERT INTO myTable" + " ([id],[description]) values (?,?)", dff.values.tolist()) 但是java.sql.SQLException: 方法不受支持
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-20
    • 1970-01-01
    • 1970-01-01
    • 2019-07-02
    • 1970-01-01
    • 1970-01-01
    • 2015-10-19
    相关资源
    最近更新 更多