cx-oracle sql 插入查询在以下情况引发错误:(分号)插入查询

cx-oracle sql insert query raise error when : (semicolon) insert into query

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

我的要求是插入 : 插入到这个 tablename 中,这个 tablename 的列类型是 varchar2。 (当我插入“0001”时,它还会删除前导零,只在 tabename 中插入“1”) 上面的代码连接 oracle 数据库 table 并创建游标以执行 sql 插入查询。如果成功更新 table,则在插入查询中使用值 7.4,但在第二个插入查询中会引发 ORA-00917 错误。 我正在使用 Oracle 版本 11g 和 python 3.7.

因为,第一种情况下的值可以归类为数字类型,可以插入到字符串类型列中。将其转换为准备好的语句,例如

myvar=7.4
cursor.execute("INSERT INTO tab(col) VALUES (:1)",[myvar]) 

that cannot be used for 7:4 which doesn't seem to be converted to a known data type even implicitly.该值应该被引用 7:4,并且适合这种情况的格式,例如

myvar='7:4'
cursor.execute("INSERT INTO tab(col) VALUES (:1)",[myvar.format('{}')])

因此,对于这两种情况,都更喜欢使用第二种方法。