SQLite3 执行 sql 语句的占位符

使用 execute 方法执行一条SQL语句,如果带有参数可以使用占位符来传递参数。使用占位符已经考虑到转码的问题,不需要自己单独处理。不用去管 SQL 注入的问题。不过占位符只是针对value,不能用于设置表名,字段等。
SQLite3支持两种占位符:问号占位符命名占位符

问号占位符

采用问号作为占位符,参数为元组形式。例如:

cur.execute("insert into people values (?, ?)", (who, age))

命名占位符

采用冒号加 key 的形式作为占位符,参数为字典形式。例如:

cur.execute("select * from people where name=:who and age=:age", 
            {"who": who, "age": age})

使用说明

一般来话,第一种方式比较方便,也比较常见。但是如果在执行sql语句需要同一个参数多次使用时,采用第二种方式就比较合适

推荐阅读更多精彩内容