function takes exactly 2 argument 3 (given) python cx_orcale 插入错误
function takes exactly 2 argument 3 (given) python cx_orcale Insert Error
我正在使用 Oracle 数据库,我正在尝试将数据框插入现有的 table 但出现额外参数错误。我连接到数据库成功了。
我的数据框
TMIDS MEM_ID
1 8 UY2554
2 8 UY2573
3 8 UY2576
我的代码:
注意:连接编码部分因为它正在工作而被跳过,这里不需要
cursor = connection.cursor()
print("connection successful")
for index, row in df.iterrows():
cursor.execute("INSERT INTO UCIDBA.dummy_table (TMIDS,MEM_ID) values(?,?)",row.TMIDS, row.MEM_ID)
connection.commit()
cursor.close()
print("inserted in table")
我低于错误
cursor.execute("INSERT INTO UCIDBA.dummy_table (TMIDS,MEM_ID) values(?,?)",row.TMIDS, row.MEM_ID)
TypeError: function takes at most 2 arguments (3 given)
您需要将值作为元组传递。
因此,将您的代码更改为:
cursor.execute("INSERT INTO UCIDBA.dummy_table (TMIDS,MEM_ID) values(?,?)",(row.TMIDS, row.MEM_ID))
是否执行游标的方法class?
如果是这样,在它的定义中,第一个参数是 self?
Python 将隐式发送它,但函数必须显式接受它。
听起来你正在将自己、row.TMIDS、row.MEM_ID 发送到只需要 row.TMIDS、row.MEM_ID[=10= 的函数]
Oracle 不使用 ?
字符来定义参数。它们必须编号 (:1
) 或命名 (:name
)。所以你的代码应该是这样的:
cursor = connection.cursor()
for index, row in df.iterrows():
cursor.execute("""
INSERT INTO UCIDBA.dummy_table (TMIDS,MEM_ID)
values(:1, :2)""",
[row.TMIDS, row.MEM_ID])
connection.commit()
cursor.close()
print("inserted in table")
我正在使用 Oracle 数据库,我正在尝试将数据框插入现有的 table 但出现额外参数错误。我连接到数据库成功了。
我的数据框
TMIDS MEM_ID
1 8 UY2554
2 8 UY2573
3 8 UY2576
我的代码:
注意:连接编码部分因为它正在工作而被跳过,这里不需要
cursor = connection.cursor()
print("connection successful")
for index, row in df.iterrows():
cursor.execute("INSERT INTO UCIDBA.dummy_table (TMIDS,MEM_ID) values(?,?)",row.TMIDS, row.MEM_ID)
connection.commit()
cursor.close()
print("inserted in table")
我低于错误
cursor.execute("INSERT INTO UCIDBA.dummy_table (TMIDS,MEM_ID) values(?,?)",row.TMIDS, row.MEM_ID)
TypeError: function takes at most 2 arguments (3 given)
您需要将值作为元组传递。 因此,将您的代码更改为:
cursor.execute("INSERT INTO UCIDBA.dummy_table (TMIDS,MEM_ID) values(?,?)",(row.TMIDS, row.MEM_ID))
是否执行游标的方法class? 如果是这样,在它的定义中,第一个参数是 self?
Python 将隐式发送它,但函数必须显式接受它。
听起来你正在将自己、row.TMIDS、row.MEM_ID 发送到只需要 row.TMIDS、row.MEM_ID[=10= 的函数]
Oracle 不使用 ?
字符来定义参数。它们必须编号 (:1
) 或命名 (:name
)。所以你的代码应该是这样的:
cursor = connection.cursor()
for index, row in df.iterrows():
cursor.execute("""
INSERT INTO UCIDBA.dummy_table (TMIDS,MEM_ID)
values(:1, :2)""",
[row.TMIDS, row.MEM_ID])
connection.commit()
cursor.close()
print("inserted in table")