【发布时间】:2020-12-29 06:49:34
【问题描述】:
dsn_tns = cx_Oracle.makedsn('myip', '1521', service_name='myservicename')
connection = cx_Oracle.connect(user='username', password='passwd', dsn=dsn_tns)
cursor = connection.cursor()
cursor.execute("INSERT INTO tablename VALUES (7.4)")
#above works ok
cursor.execute("INSERT INTO tablename VALUES (7:4)")
#above sql raise cx_Oracle.DatabaseError: ORA-00917: missing comma
connection.commit()
connection.close()
我的要求是在这个表名中插入:,这个表名的列类型是varchar2。 (当我插入“0001”时,它还会删除前导零,并且只在 tabename 中插入“1”) 以上代码连接oracle数据库表并创建游标以执行sql插入查询。在插入查询中,如果成功更新表,则值为 7.4,但在第二次插入时会引发 ORA-00917 错误。 我正在使用 oracle 版本 11g 和 python 3.7。
【问题讨论】:
-
那么
tablename应该是一个只有一列数字类型的表,因此7:4没有意义。 -
@BarbarosÖzhan 感谢您的回复,但它似乎是其他问题,因为表列是 varchar2 类型并且旁边:(分号)它也无法插入前导零。
-
不客气。如果数据类型是 varchar,那么你应该引用它
'7:4',7.4被隐式认为是一个数值,在插入 varchar 类型列时不会遇到问题,但是相反的情况(char to numeric)可能不会成功 -
@BarbarosÖzhan 你是对的,它适用于 '7:4',但是当我使用变量 cx_Oracle.DatabaseError: ORA-00936: missing expression myvar='7:4' cursor.execute ('INSERT INTO tablename(col1) VALUES ({myvar})')
-
现在,单引号中的单引号会引发错误。
标签: python python-3.x oracle sql-insert cx-oracle