首先,让我们来安装PyODBC:
# 在命令行执行pip install pyodbc
小贴士:在安装PyODBC之前,请确保你的电脑上已经安装了相应数据库的驱动程序哦!
2. 建立数据库连接让我们先来看看如何连接到一个SQL Server数据库:
import pyodbcdef create_connection(): # 连接参数 server = 'localhost' database = 'TestDB' username = 'sa' password = 'your_password' # 建立连接字符串 conn_str = f''' DRIVER={{SQL Server}}; SERVER={server}; DATABASE={database}; UID={username}; PWD={password} ''' try: # 创建连接 conn = pyodbc.connect(conn_str) print("连接成功!") return conn except pyodbc.Error as e: print(f"连接失败:{str(e)}") return None# 测试连接connection = create_connection()
3. 基本数据库操作来看看如何进行基本的增删改查操作:
def basic_database_operations(conn): # 创建游标 cursor = conn.cursor() # 创建表 cursor.execute(''' CREATE TABLE IF NOT EXISTS employees ( id INT PRIMARY KEY, name VARCHAR(50), salary DECIMAL(10,2) ) ''') # 插入数据 cursor.execute(''' INSERT INTO employees (id, name, salary) VALUES (?, ?, ?) ''', (1, '小青', 5000.00)) # 查询数据 cursor.execute('SELECT * FROM employees') for row in cursor: print(f"ID: {row.id}, 姓名: {row.name}, 工资: {row.salary}") # 提交更改 conn.commit() cursor.close()
小贴士:记得在操作完成后调用commit()来保存更改,用完后关闭游标和连接!
4. 批量操作和参数化查询处理大量数据时,使用批量操作可以提高效率:
def batch_operations(conn): cursor = conn.cursor() # 准备批量插入的数据 employees = [ (2, '小明', 6000.00), (3, '小红', 6500.00), (4, '小华', 7000.00) ] # 批量插入 cursor.executemany(''' INSERT INTO employees (id, name, salary) VALUES (?, ?, ?) ''', employees) # 使用参数化查询 min_salary = 6000.00 cursor.execute(''' SELECT * FROM employees WHERE salary >= ? ''', min_salary) results = cursor.fetchall() for row in results: print(f"{row.name}的工资是{row.salary}") conn.commit() cursor.close()
5. 异常处理和事务管理在实际应用中,proper错误处理很重要:
def safe_database_operation(conn): cursor = conn.cursor() try: # 开始事务 cursor.execute("BEGIN TRANSACTION") # 执行一系列操作 cursor.execute(''' UPDATE employees SET salary = salary * 1.1 WHERE salary < ? ''', (6000.00,)) # 检查是否有足够的预算 cursor.execute('SELECT SUM(salary) as total FROM employees') total_salary = cursor.fetchone().total if total_salary > 30000: # 如果总工资超出预算,回滚 raise Exception("超出预算!") # 提交事务 conn.commit() print("加薪成功!") except Exception as e: # 发生错误时回滚 conn.rollback() print(f"操作失败:{str(e)}") finally: cursor.close()
6. 实用技巧这里有一些实用的进阶操作:
def advanced_tips(conn): cursor = conn.cursor() # 获取表结构信息 cursor.columns('employees') for column in cursor: print(f"列名:{column.column_name}, 类型:{column.type_name}") # 使用with语句自动管理连接 with conn.cursor() as cur: cur.execute("SELECT COUNT(*) FROM employees") count = cur.fetchval() # 获取单个值 print(f"总员工数:{count}") # 获取查询结果为字典形式 cursor.execute("SELECT * FROM employees") columns = [column[0] for column in cursor.description] results = [dict(zip(columns, row)) for row in cursor.fetchall()] print(results)
练习题:
尝试编写一个函数,可以根据部门名称查询该部门的平均工资实现一个简单的员工管理系统,包含增加、删除、修改、查询功能小贴士:
在正式环境中,千万不要在代码里硬编码数据库密码大量数据操作时,建议使用批量操作而不是循环单条插入记得及时关闭数据库连接,避免资源泄露使用参数化查询可以防止SQL注入攻击今天的Python学习之旅就到这里啦!记得动手敲代码。祝大家学习愉快,Python学习节节高!