首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python RuntimeError:找不到"mi“代替

python RuntimeError:找不到"mi“代替
EN

Stack Overflow用户
提问于 2017-03-17 09:26:02
回答 2查看 43关注 0票数 1

我想在甲骨文数据库里写个约会

代码语言:javascript
复制
sql = """INSERT INTO app_mobile_scout
    (type_event, date_event, version_app, UUID, name_event, description, device_model, IMEI, ip_device).
    values ('%s', to_date('%s', "yyyy/mm/dd hh24:mi:ss"), '%s', '%s', '%s', '%s', '%s', '%s', '%s')"""%(type_event, date_event, version_app, UUID, name_event, description, device_mod
    res = cur.execute(sql)

我有个错误:

代码语言:javascript
复制
RuntimeError: "mi" not found for replace in "INSERT INTO app_mobile
    (type_event, date_event, version_app, UUID, name_event, description, device_model, IMEI, ip_device).
    values ('2', to_date('2017/03/16 11:46:06', "yyyy/mm/dd hh24:mi:ss"), '4.0.4',......

我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-17 09:37:36

首先,在SQL中您应该使用对字符串使用单引号。双引号用于标识符

代码语言:javascript
复制
values ('%s', to_date('%s', 'yyyy/mm/dd hh24:mi:ss')
#                           ^                     ^

您的代码也是倾向于SQL注入。相反,绑定变量

代码语言:javascript
复制
# Note: Doesn't work yet.
cursor.execute("""
    INSERT INTO app_mobile_scout (
        type_event, 
        date_event, 
        version_app, 
        -- etc
    ) VALUES (
        :type,     -- <-- use the variable 'type' here.
        to_date(:date, 'YYYY/MM/DD HH24:MI:SS'),
        :version,
        -- etc
    );
""", {
    'type': type_event,    # <-- bind `type_event` to the variable 'type'
    'date': date_event,
    'version': version,
    # etc.
})

现在,由于一些未知的原因,Oracle数据库将字符串中的:MI:SS解释为占位符,从而导致OP所看到的错误。我认为这是甲骨文方面的一个错误。正如OP所证实的,它似乎可以通过加倍“转义”冒号来解决。

代码语言:javascript
复制
        to_date(:date, 'YYYY/MM/DD HH24::MI::SS'),
票数 1
EN

Stack Overflow用户

发布于 2017-03-17 09:32:52

与Python不同,Oracle不像双引号'那样解释单引号"

在您的情况下,日期格式写在双引号之间,这是错误的。

换句话说,更改:[...], to_date('2017/03/16 11:46:06', "yyyy/mm/dd hh24:mi:ss"), [...][...], to_date('2017/03/16 11:46:06', 'yyyy/mm/dd hh24:mi:ss'), [...]

关于Oracle中的单引号和双引号:https://community.oracle.com/message/3853568#3853568

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42853638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档