在python中连接mysql数据库,并进行增删改查

本文介绍如何使用Python连接MySQL数据库,并实现基本的增删改查操作。涵盖了MySQLdb库的安装及使用方法,提供了完整的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库在开发过程中是最常见的,基本上在服务端的编程过程中都会使用到,mysql是较常见的一种数据库,这里介绍python如果连接到数据库中,并对数据库进行增删改查。

安装mysql的python扩展

使用MySQLdb第三方扩展库连接mysql,首先在python解析器下,查看MySQLdb是否已经安装,命令如下:

import MySQLdb

如果没有安装会出现下面的错误:

ImportError: No module named MySQLdb

安装MySQLdb ,分不同的平台,在windows下,在连接https://pypi.python.org/pypi/MySQL-python/1.2.5 下载MySQL-python-1.2.5.win32-py2.7.exe 进行安装,安装的过程跟普通的软件并没有什么区别。

centos下使用命令进行安装:

sudo yum install MySQL-python

安装完成后,在进行import MySQLdb 就不会再报错了。

连接mysql,并进行增删改查

通常在进行数据库操作时,程序使用的是如下的过程:

  • 连接数据库,返回连接句柄

  • 使用连接句柄进行SQL语句的操作

  • 关闭数据库连接

如下的代码更加能过看清这个过程:

#!/usr/bin/python
#coding=utf-8

"""
start python 项目
"""


import MySQLdb

conn= MySQLdb.connect(
        host='localhost',
        port = 3306,
        user='root',
        passwd='123456',
        db ='test',
        )
cur = conn.cursor()



#执行sql语句
cur.execute("insert into bugingcode values('阿猫学编程')")
conn.commit()

#返回数据
cur.execute("select * from bugingcode")
datacur = cur.fetchall()
print datacur


#关闭连接
cur.close()
conn.close()
MySQLdb中常用函数
  • MySQLdb 连接数据库:

    1. conn= MySQLdb.connect #连接数据库
    2. cur = conn.cursor() #返回当前句柄
    3. commit() #提交
    4. rollback() #回滚
  • cursor执行sql语句的方法:

    1. execute(self, query, args): 执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数

    2. callproc(self, procname, args) :用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数

    3. executemany(self, query, args): 执行单挑sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数

    4. nextset(self) 移动到下一个结果集

  • cursor用来接收返回值的方法:

    1. fetchall(self): 接收全部的返回结果行.

    2. fetchmany(self, size=None) :接收size条返回结果行.如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据.

    3. fetchone(self): 返回一条结果行.

    4. rowcount 这是一个只读属性,并返回执行execute() 方法后影响的行数。

    5. scroll(self, value, mode=’relative’) :移动指针到某一行; 如果mode=’relative’,则表示从当前所在行移动value条,如果 mode=’absolute’,则表示从结果集的第一行移动value条.

  • 关闭连接

关闭当前句柄:

    cur.close()

关闭当前连接:

conn.close()

进一步封装

MySQLdb 的封装,在网上有很多封装类,可以选择一个或者根据自己的需求,写一个适合自己的连接库。

更多教程:阿猫学编程

<think>我们首先需要安装pymysql库,使用pip install pymysql 然后,我们将按照以下步骤进行: 1. 连接数据库 2. 创建游标对象 3. 执行SQL语句(增删改查) 4. 提交事务(对于增删改) 5. 关闭游标和连接 注意:在执行增删改操作后,需要commit,如果发生异常则rollback。 我们将分别展示插入、查询、更新和删除的示例。 参考引用[3]中提到的,使用pymysql进行连接和操作,且使用commit和rollback。 我们将创建一个示例表,假设表名为`users`,有id, name, age三个字段。 步骤: 1. 连接数据库 2. 创建游标 3. 执行创建表的SQL(如果表不存在,为了示例我们假设表已存在,或者先创建) 4. 分别进行插入、查询、更新、删除操作 注意:在实际操作中,为了防止SQL注入,我们使用参数化查询,用%s作为占位符。 下面我们给出完整的示例代码,包括增删改查操作。</think>### Python连接MySQL数据库增删改查操作指南 #### 环境准备 1. 安装`pymysql`库: ```bash pip install pymysql ``` 2. 确保MySQL服务已启动,创建测试数据库(示例使用数据库名`testdb`) #### 完整示例代码 ```python import pymysql # 1. 数据库连接配置 config = { 'host': 'localhost', # 数据库服务器地址 'user': 'root', # 用户名 'password': 'your_password', # 密码 'database': 'testdb', # 数据库名 'port': 3306, # 端口号 'charset': 'utf8mb4' # 字符编码 } # 2. 建立数据库连接 connection = pymysql.connect(**config) try: # 3. 创建游标对象 with connection.cursor() as cursor: # 创建数据表(如果不存在) create_table_sql = """ CREATE TABLE IF NOT EXISTS users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE, age INT ) """ cursor.execute(create_table_sql) print("✅ 数据表创建/验证成功") # 4. 插入数据(增) insert_sql = "INSERT INTO users (name, email, age) VALUES (%s, %s, %s)" user_data = [ ('张三', 'zhangsan@example.com', 25), ('李四', 'lisi@example.com', 30), ('王五', 'wangwu@example.com', 28) ] cursor.executemany(insert_sql, user_data) connection.commit() # 提交事务 print(f"✅ 成功插入 {cursor.rowcount} 条记录") # 5. 查询数据(查) select_sql = "SELECT * FROM users WHERE age > %s" cursor.execute(select_sql, (26,)) results = cursor.fetchall() print("\n🔍 查询结果(年龄>26的用户):") for row in results: print(f"ID: {row[0]}, 姓名: {row[1]}, 邮箱: {row[2]}, 年龄: {row[3]}") # 6. 更新数据(改) update_sql = "UPDATE users SET age = %s WHERE name = %s" cursor.execute(update_sql, (32, '李四')) connection.commit() print(f"\n🔄 更新了 {cursor.rowcount} 条记录") # 7. 删除数据(删) delete_sql = "DELETE FROM users WHERE name = %s" cursor.execute(delete_sql, ('王五',)) connection.commit() print(f"\n❌ 删除了 {cursor.rowcount} 条记录") # 验证最终数据 cursor.execute("SELECT * FROM users") final_data = cursor.fetchall() print("\n📊 最终数据:") for row in final_data: print(row) finally: # 8. 关闭数据库连接 connection.close() print("\n🔒 数据库连接已关闭") ``` #### 关键操作说明 1. **数据库连接**: - 使用`pymysql.connect()`建立连接 - 参数包括主机、用户名、密码、数据库名等 2. **事务管理**: - 增删改操作后必须执行`connection.commit()`提交事务 - 使用`try-finally`确保异常时关闭连接 - 错误处理可添加`except`块进行`rollback()` 3. **参数化查询**: - 使用`%s`作为占位符防止SQL注入 - 示例:`cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,))` 4. **批量操作**: - 使用`executemany()`高效插入多条数据 - 示例:`cursor.executemany(insert_sql, user_data)` #### 执行结果示例 ``` ✅ 数据表创建/验证成功 ✅ 成功插入 3 条记录 🔍 查询结果(年龄>26的用户): ID: 2, 姓名: 李四, 邮箱: lisi@example.com, 年龄: 30 ID: 3, 姓名: 王五, 邮箱: wangwu@example.com, 年龄: 28 🔄 更新了 1 条记录 ❌ 删除了 1 条记录 📊 最终数据: (1, '张三', 'zhangsan@example.com', 25) (2, '李四', 'lisi@example.com', 32) 🔒 数据库连接已关闭 ``` #### 最佳实践建议 1. 使用上下文管理器管理资源: ```python with pymysql.connect(**config) as conn: with conn.cursor() as cursor: cursor.execute("SELECT NOW()") ``` 2. 敏感信息处理: - 将数据库密码存储在环境变量中 - 使用`python-dotenv`加载`.env`文件 3. ORM替代方案: - 复杂项目推荐使用SQLAlchemy等ORM工具 - 简化数据库操作增强安全性 4. 连接池管理: - 高发场景使用`DBUtils.PooledDB` - 减少频繁创建连接的开销[^2][^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

go2coding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值