将行插入需要字符串或字节对象的数据库时出错

问题描述 投票:0回答:1

我正在尝试将从 csv 派生的数据框插入到 Oracle 表中,并收到上述消息。

try:
    dfTuple = [tuple(x) for x in dfOrders.values]

    sqlTxt = 'INSERT INTO SCHEMA.MYTABLE\
                (Field1, Field2, Field3, Field4, Field5)\
                VALUES (:1, :2, :3, :4, :5)'
    
    cursor.executemany(sqlTxt, [x for x in dfTuple])

    rowCount = cursor.rowcount
    print("number of inserted rows =", rowCount)

    connection.commit()

except Exception as err:
    print('Error while inserting rows into db')
    print(err) 
finally:
    if(connection):
       cursor.close()
       connection.close()

我已经尝试了 ( { [ 与 VALUES 的所有类型的变体,但似乎都不起作用。在数据库字段 1-5 中是 INT、INT、VARCHAR、DATE、VARCHAR...我是否需要以某种方式转换数据帧 (首先作为所有对象)进入每个正确的数据类型?

这就是 dfTuple 的样子,原始的 dfOrders.dtypes 将所有内容显示为对象:

python tuples cx-oracle
1个回答
0
投票

根据 oracle-cx 文档中的示例

data = [
    (10, 'Parent 10'),
    (20, 'Parent 20'),
    (30, 'Parent 30'),
    (40, 'Parent 40'),
    (50, 'Parent 50')
]
cursor.executemany("insert into ParentTable values (:1, :2)", data)

尝试使用不带单个引号的整数值进行元组样本

© www.soinside.com 2019 - 2024. All rights reserved.