使用 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语句需要同一个参数多次使用时,采用第二种方式就比较合适