python的sqlite3使用占位
时间: 2023-10-16 08:11:05 浏览: 34
在 Python 中使用 SQLite3 数据库时,可以使用占位符 '?' 来防止 SQL 注入攻击,并且能够更有效地执行查询语句。下面是一个示例代码:
```python
import sqlite3
conn = sqlite3.connect('example.db')
c = conn.cursor()
# 创建一个表
c.execute('''CREATE TABLE stocks
(date text, trans text, symbol text, qty real, price real)''')
# 插入数据
c.execute("INSERT INTO stocks VALUES (?, ?, ?, ?, ?)", ('2021-10-01', 'BUY', 'AAPL', 100, 139.5))
# 查询数据
symbol = ('AAPL',)
c.execute('SELECT * FROM stocks WHERE symbol=?', symbol)
print(c.fetchone())
# 提交更改并关闭连接
conn.commit()
conn.close()
```
在上面的代码中,我们使用了问号占位符来代替 SQL 语句中的参数,并在执行 SQL 语句时将参数作为元组传递给 execute() 方法。这样就可以避免 SQL 注入攻击,同时也可以更有效地执行查询语句。
相关问题
pythonsqlite3批量插入
可以使用以下代码实现Python中使用sqlite3进行批量插入数据:
```python
import sqlite3
# 连接数据库
conn = sqlite3.connect('example.db')
c = conn.cursor()
# 创建数据表
c.execute('''CREATE TABLE IF NOT EXISTS test_table
(id INT PRIMARY KEY NOT NULL,
name TEXT NOT NULL,
age INT NOT NULL);''')
# 批量插入数据
data = [(1, 'Alice', 25), (2, 'Bob', 30), (3, 'Charlie', 35)]
c.executemany('INSERT INTO test_table VALUES (?, ?, ?)', data)
# 提交更改
conn.commit()
# 关闭数据库连接
conn.close()
```
在上面的代码中,首先使用`sqlite3.connect()`函数连接数据库,然后使用`c.execute()`函数创建数据表。接着,使用`c.executemany()`函数进行批量插入数据,其中的`?`表示占位符,可以通过元组或列表来传递插入的数据。最后,使用`conn.commit()`函数提交更改,关闭数据库连接。
python sqlite3 按条件插入
可以使用 SQLite3 中的 INSERT INTO 语句来按条件插入数据。
假设有一个名为 `table_name` 的表,其中有三个列分别为 `column1`、`column2` 和 `column3`,我们要按照 `column1` 的值是否等于某个值来插入数据,可以使用如下代码:
```python
import sqlite3
conn = sqlite3.connect('database.db')
cursor = conn.cursor()
value1 = 'value1'
value2 = 'value2'
value3 = 'value3'
if value1 == 'some_value':
cursor.execute("INSERT INTO table_name (column1, column2, column3) VALUES (?, ?, ?)", (value1, value2, value3))
conn.commit()
conn.close()
```
在上面的代码中,我们首先连接到数据库 `database.db`,然后创建一个光标 `cursor`。接着定义了三个变量 `value1`、`value2` 和 `value3`,分别表示要插入的数据的三个值。在 if 语句中,我们判断 `value1` 是否等于某个值,如果是,则执行 `INSERT INTO` 语句插入数据,其中 `?` 表示占位符,后面的元组 `(value1, value2, value3)` 中的值会按顺序替换占位符。最后调用 `commit()` 方法提交更改并关闭数据库连接。
你可以根据自己的实际情况修改上面的代码,例如修改表名、列名、条件等。