本文将详细阐述Python数据库连接的各个方面,包括连接数据库、执行SQL查询、插入和更新数据、事务处理等。通过本文的学习,读者将对Python中数据库连接的基本原理和操作有深入的了解。
一、连接数据库
1、使用Python内置的sqlite3模块连接SQLite数据库
import sqlite3
# 连接数据库
conn = sqlite3.connect('test.db')
# 创建游标对象
cursor = conn.cursor()
# 执行SQL语句
cursor.execute('SELECT * FROM students')
# 获取查询结果
result = cursor.fetchall()
# 关闭数据库连接
conn.close()
2、使用第三方库如pyodbc连接其他数据库,如Microsoft SQL Server
import pyodbc
# 连接数据库
conn = pyodbc.connect('DRIVER={SQL Server};SERVER=localhost;DATABASE=test;UID=username;PWD=password')
# 创建游标对象
cursor = conn.cursor()
# 执行SQL语句
cursor.execute('SELECT * FROM employees')
# 获取查询结果
result = cursor.fetchall()
# 关闭数据库连接
conn.close()
二、执行SQL查询
1、查询所有数据
# 执行SQL语句
cursor.execute('SELECT * FROM students')
# 获取查询结果
result = cursor.fetchall()
2、查询满足条件的数据
# 执行带参数的SQL语句
cursor.execute('SELECT * FROM students WHERE age > ? AND gender = ?', (18, 'male'))
# 获取查询结果
result = cursor.fetchall()
三、插入和更新数据
1、插入单条数据
# 执行插入SQL语句
cursor.execute('INSERT INTO students (name, age, gender) VALUES (?, ?, ?)', ('Tom', 20, 'male'))
# 提交事务
conn.commit()
2、插入多条数据
# 执行插入SQL语句
cursor.executemany('INSERT INTO students (name, age, gender) VALUES (?, ?, ?)', [('Tom', 20, 'male'), ('Alice', 19, 'female')])
# 提交事务
conn.commit()
3、更新数据
# 执行更新SQL语句
cursor.execute('UPDATE students SET age = ? WHERE name = ?', (21, 'Tom'))
# 提交事务
conn.commit()
四、事务处理
1、自动提交事务(默认情况下,每次数据操作都是一个独立的事务)
# 开启自动提交事务
conn.autocommit = True
# 执行SQL语句
cursor.execute('UPDATE students SET age = ? WHERE name = ?', (21, 'Tom'))
2、手动提交事务
# 开启手动提交事务
conn.autocommit = False
# 执行SQL语句
cursor.execute('UPDATE students SET age = ? WHERE name = ?', (21, 'Tom'))
# 提交事务
conn.commit()
3、事务回滚
# 开启手动提交事务
conn.autocommit = False
try:
# 执行SQL语句
cursor.execute('UPDATE students SET age = ? WHERE name = ?', (21, 'Tom'))
# 提交事务
conn.commit()
except:
# 回滚事务
conn.rollback()
finally:
# 关闭数据库连接
conn.close()
五、总结
通过本文对Python数据库连接的详细讲解,我们了解了如何连接数据库、执行SQL查询、插入和更新数据以及事务处理等方面的操作。熟练掌握这些知识,对于开发数据库相关的应用程序将有很大帮助。
需要注意的是,不同的数据库可能需要使用不同的库和语法,因此在实际开发中需要根据具体情况选择适合的库和语法。