【问题标题】:Python SQLite3 Problem with?Python SQLite3 有问题吗?
【发布时间】:2010-11-04 15:21:23
【问题描述】:

我目前正在使用 Python 学习 SQLite3。我正在查看手册,它告诉我执行以下操作:

data = (tablename, )
c.execute("CREATE TABLE IF NOT EXISTS ?(uid INTEGER PRIMARY KEY, title TEXT NOT NULL, duedate INTEGER NOT NULL, description TEXT, archived INTEGER)", data)

但是,我遇到了一个错误。声明如下:

sqlite3.OperationalError: near "?": syntax error

发生了什么事?

【问题讨论】:

    标签: python sql sqlite


    【解决方案1】:

    遗憾的是 DB-API 的参数替换 ? 不适用于表名、列名 .. 并且在 python 中的所有 DB API 中都是一样的。

    DB-API 的参数替换仅适用于 SELECT * FROM table WHERE id = ? 中的值,因此您必须进行字符串格式化或直接将名称表放入字符串中。

    query = "CREATE TABLE IF NOT EXISTS %s (uid INTEGER PRIMARY KEY, title TEXT NOT NULL, duedate INTEGER NOT NULL, description TEXT, archived INTEGER)" % table_name
    
    conn.execute(query)
    

    【讨论】:

    • 感谢您解决了这个问题。我还在 php mysqli::stmt->prepare 心态
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    • 2018-01-25
    • 2021-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多