SQLite3Error():Python中处理数据库错误的 实践
发布时间:2023-12-29 07:12:19
在 Python 中处理数据库错误时, 实践是使用 try-except 块捕捉异常并处理错误情况。SQLite3Error 是 Python SQLite3 模块中的错误类,用于捕捉与 SQLite 数据库相关的错误。以下是一个示例代码,演示了如何使用 SQLite3Error 处理数据库错误。
import sqlite3
from sqlite3 import Error, IntegrityError, OperationalError
def create_connection(db_file):
conn = None
try:
conn = sqlite3.connect(db_file)
print(f"Successfully connected to database: {db_file}")
except Error as e:
print(e)
return conn
def create_table(conn):
try:
sql = """CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER NOT NULL
);"""
cursor = conn.cursor()
cursor.execute(sql)
conn.commit()
print("Table created successfully")
except Error as e:
print(e)
conn.rollback()
def insert_user(conn, name, age):
try:
sql = "INSERT INTO users (name, age) VALUES (?, ?);"
cursor = conn.cursor()
cursor.execute(sql, (name, age))
conn.commit()
print(f"User '{name}' inserted successfully")
except IntegrityError as e:
print(f"User '{name}' already exists")
except OperationalError as e:
print("Operational error occurred")
print(e)
conn.rollback()
def main():
database = "example.db"
conn = create_connection(database)
if conn is None:
print("Error creating database connection")
return
create_table(conn)
insert_user(conn, "John Doe", 25)
insert_user(conn, "Jane Smith", 30)
insert_user(conn, "John Doe", 35) # This will raise IntegrityError
conn.close()
if __name__ == '__main__':
main()
在上面的代码中,我们首先创建了一个 create_connection 函数,它负责创建到 SQLite 数据库的连接。如果发生错误,它会在控制台打印错误消息。接下来,我们定义了一个 create_table 函数,该函数创建名为 users 的表。如果出现错误,它将回滚事务并打印错误消息。然后,我们定义了 insert_user 函数,该函数用于向 users 表中插入用户记录。如果插入的用户名已经存在,则会引发 IntegrityError,我们会捕获此异常并打印消息。如果出现其他操作错误,将回滚事务并打印错误消息。
最后,我们在 main 函数中调用上述定义的函数来执行数据库操作。在这个例子中,我们首先尝试在数据库中创建一个 users 表,然后插入一些用户记录,其中包括一个已经存在的用户名。当插入重复的用户名时,会引发 IntegrityError,我们将在控制台打印错误消息并继续执行程序。
通过这种方式,我们可以利用 Python 的异常处理机制来捕获和处理 SQLite 数据库中的错误,确保程序在遇到错误时能够正确处理。
