代码之家  ›  专栏  ›  技术社区  ›  Overflown

Python pysqlite不接受我的qmark参数化

  •  1
  • Overflown  · 技术社区  · 17 年前

    
    from pysqlite2 import dbapi2 as sqlite
    import types
    import re
    import sys
    ...
        def create_asgn(self):
            stmt = "CREATE TABLE ? (login CHAR(8) PRIMARY KEY NOT NULL, grade INTEGER NOT NULL)"
            stmt2 = "insert into asgn values ('?', ?)"
            self.cursor.execute(stmt, (sys.argv[2],))
            self.cursor.execute(stmt2, [sys.argv[2], sys.argv[3]])
    ...
     I get the error pysqlite2.dbapi2.OperationalError: near "?": syntax error 

    3 回复  |  直到 17 年前
        1
  •  7
  •   nosklo    17 年前

    这是因为参数只能传递给值。无法参数化表名。

        2
  •  2
  •   Luke Woodward    17 年前

    尝试删除指定给的行中的引号 stmt2 :

        stmt2 = "insert into asgn values (?, ?)"
    

    此外,正如nosklo所说,您不能将问号参数化用于CREATETABLE语句。将表名直接粘贴到SQL中。

        3
  •  1
  •   user69127 user69127    17 年前

    def read(db=“projects”):

    sql = "select * from %s"
    sql = sql % db
    c.execute(sql)
    
    推荐文章