import sqlite3
conn = sqlite3.connect('example.db')
# Используя cursor.execute()
cursor = conn.cursor()
cursor.execute('SELECT * FROM table_name')
# Используя conn.execute()
conn.execute('DELETE FROM table_name WHERE condition')
import sqlite3
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
# Выполнение запроса
cursor.execute('SELECT * FROM table_name')
# Извлечение результатов
result = cursor.fetchall()
# Управление транзакцией
cursor.execute('UPDATE table_name SET column_name = value WHERE condition')
conn.commit()
# СОздать и заполнить.
con = sqlite3.connect(":memory:")
con.execute("CREATE TABLE lang(name, first_appeared)")
data = [
("C++", 1985),
("Objective-C", 1984),
]
con.executemany("INSERT INTO lang(name, first_appeared) VALUES(?, ?)", data)
# Вывод выборки
for row in con.execute("SELECT name, first_appeared FROM lang"):
print(row)
print("I just deleted", con.execute("DELETE FROM lang").rowcount, "rows")
# close() не является методом быстрого доступа и не вызывается автоматически;
# объект соединения должен быть закрыт вручную
con.close()
cursor.execute() 用于通过特定游标执行 SQL 查询。
conn.execute() 用于通过连接对象进行单个请求。该方法创建临时游标,执行请求,然后关闭游标。这对于一次性请求来说很方便。
例子:
使用
cursor
在执行 SQL 查询时提供额外的控制。也就是说,cursor
与 相比,使用它可以提供更灵活的管理和更强大的功能conn.execute()
,这在更复杂的数据库场景中尤其有用。这是一个例子:
在文档中发现,当调用 Connection.execute() 时,游标是隐式创建的。
“常常没有必要”有点烦人,不知道什么时候就没有必要了。