python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > python连接sqlite3用法

python连接sqlite3简单用法完整例子

作者:ypgf_186

SQLite3是一个内置的Python模块,可以通过Python的标准库轻松地使用,无需进行额外安装和配置,这篇文章主要介绍了python连接sqlite3简单用法的相关资料,需要的朋友可以参考下

1. 连接到数据库

在 Python 中使用 sqlite3.connect() 方法连接到 SQLite 数据库。如果数据库文件不存在,会自动创建。

import sqlite3
 
# 连接到数据库文件(如果不存在则自动创建)
conn = sqlite3.connect('example.db')

2. 创建游标对象

通过连接对象创建游标(Cursor),用于执行 SQL 语句。

cursor = conn.cursor()

3. 创建表

使用 create table 语句创建表,推荐使用 if not exists 避免重复创建。

cursor.execute('''
    CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT NOT NULL,
        age INTEGER,
        email TEXT UNIQUE
    )
''')
conn.commit()

4. 插入数据

使用 insert into 插入数据,推荐使用参数化查询防止 SQL 注入。

# 单条插入
cursor.execute("INSERT INTO users (name, age, email) VALUES (?, ?, ?)", 
               ('Alice', 25, 'alice@example.com'))
 
# 多条插入
users_data = [
    ('Bob', 30, 'bob@example.com'),
    ('Charlie', 35, 'charlie@example.com')
]
cursor.executemany("INSERT INTO users (name, age, email) VALUES (?, ?, ?)", users_data)
 
conn.commit()

5. 查询数据

使用 select 查询数据,结果通过 fetchone()fetchall() 获取。

# 查询所有用户
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:
    print(row)
 
# 条件查询
cursor.execute("SELECT name, age FROM users WHERE age > ?", (30,))
result = cursor.fetchone()
print(result)

6. 更新数据

使用 update 修改已有数据。

cursor.execute("UPDATE users SET age = ? WHERE name = ?", (26, 'Alice'))
conn.commit()

7. 删除数据

使用 delete from 删除数据。

cursor.execute("DELETE FROM users WHERE name = 'Bob'")
conn.commit()

8. 创建索引(可选)

索引可以加速查询,但会降低插入/更新速度。

cursor.execute("CREATE INDEX idx_name ON users (name)")
conn.commit()

9. 事务处理

SQLite 支持事务(begin, commit, rollback),确保操作的原子性。

try:
    # 开始事务
    conn.execute("BEGIN")
    
    # 执行多条操作
    cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ('David', 28))
    cursor.execute("UPDATE users SET age = ? WHERE name = ?", (29, 'David'))
    
    # 提交事务
    conn.commit()
except Exception as e:
    print("事务失败,回滚:", e)
    conn.rollback()  # 回滚事务

10. 关闭连接

操作完成后,关闭游标和数据库连接。

cursor.close()
conn.close()

完整示例代码

import sqlite3
 
# 1. 连接数据库
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
 
# 2. 创建表
cursor.execute('''
    CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT NOT NULL,
        age INTEGER,
        email TEXT UNIQUE
    )
''')
conn.commit()
 
# 3. 插入数据
cursor.execute("INSERT INTO users (name, age, email) VALUES (?, ?, ?)", 
               ('Alice', 25, 'alice@example.com'))
conn.commit()
 
# 4. 查询数据
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:
    print(row)
 
# 5. 更新数据
cursor.execute("UPDATE users SET age = ? WHERE name = ?", (26, 'Alice'))
conn.commit()
 
# 6. 删除数据
cursor.execute("DELETE FROM users WHERE name = 'Alice'")
conn.commit()
 
# 7. 关闭连接
cursor.close()
conn.close()

常见错误与避坑指南

  1. 忘记提交事务

    • 错误:插入/更新/删除后未调用 conn.commit()
    • 修正:每次修改数据后必须调用 conn.commit()
  2. SQL 注入风险

    • 错误:直接拼接 SQL 语句(如 f"INSERT INTO users VALUES ({name})")。
    • 修正:使用参数化查询(如 VALUES (?, ?))。
  3. 字段名与保留字冲突

    • 错误:使用 ordergroup 等保留字作为字段名。
    • 修正:避免使用保留字,或用引号包裹字段名(如 "order")。
  4. 未关闭连接

    • 错误:程序结束时未关闭 cursor 和 conn
    • 修正:使用 with 上下文管理器自动关闭资源:
      with sqlite3.connect('example.db') as conn:
          cursor = conn.cursor()
          # 执行操作...

总结

到此这篇关于python连接sqlite3简单用法的文章就介绍到这了,更多相关python连接sqlite3用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文