python 操作mysql
python 操作mysql
-
需要安装PyMySql
- 打开控制台,输入:pip install pymysql
-
新建一个库srp和表user():
-
create database srp; use srp; create table user ( uId int auto_increment comment '用户id' primary key, uName varchar(20) not null comment '用户姓名', uStuNumber varchar(15) not null comment '学号', uSex varchar(1) not null comment 'm:男,f:女', uCollege varchar(20) not null comment '学院', uCurrentMajor varchar(20) not null comment '专业', uEnrolTime datetime not null comment '入学时间', phone varchar(19) not null comment '手机号', qq varchar(20) not null comment 'qq号', uPassword varchar(20) not null comment '密码', uPhoto varchar(255) null );
- 然后自己随便插入几条数据,基本工作已经完成了。
-
-
我们首先对pymysql.connect几个参数需要了解一下(这里只挑几个重要的了解一下)
def __init__( self, *, user=None, # The first four arguments is based on DB-API 2.0 recommendation.用户名 password="", #密码 host=None, #主机名 database=None, #数据库名 unix_socket=None, #使用unix套接字 port=0, #端口号 charset="", #字符集 sql_mode=None, #sql 模式 read_default_file=None, conv=None, use_unicode=True, client_flag=0, cursorclass=Cursor, init_command=None, connect_timeout=10, read_default_group=None, autocommit=False, local_infile=False, max_allowed_packet=16 * 1024 * 1024, defer_connect=False, auth_plugin_map=None, read_timeout=None, write_timeout=None, bind_address=None, binary_prefix=False, program_name=None, server_public_key=None, ssl=None, ssl_ca=None, ssl_cert=None, ssl_disabled=None, ssl_key=None, ssl_verify_cert=None, ssl_verify_identity=None, compress=None, # not supported named_pipe=None, # not supported passwd=None, # deprecated db=None, # deprecated ):
-
connect的部分方法
begin() #开始事务 commit() #提交事务 cursor() #创建游标 rollback() #事务回滚操作 close() #关闭操作
-
cursor(游标)常用方法
excure() #执行单行语句 fetchone() #获取第一行 fetchmany(size) #获取size行 fetchall() #获取所有的行 close() #关闭
-
python连接mysql库srp
import pymysql # mysql连接 db = pymysql.connect( host="localhost", # IP地址 port=3306, # 端口号 user="root", # 用户名 password="", # 密码 db="srp", # 数据库名 charset="utf8" # 字符集编码 ) print(db)
-
查询操作:
-
查询所有数据(*)
# 创建一个mysql游标对象 ''' 什么事游标?游标就是mysql检索操作返回的一组结果集,类似于java中的resultSet 游标是只读的,不可以被修改 ''' # 使用cursor()方法创建一个游标对象 cursor cursor = db.cursor() # 使用游标的execute()方法执行SQL查询 sql = "select uId,uName,uSex,uCollege from user" cursor.execute(sql) # 执行sql语句 result = cursor.fetchall() #类似java 的ResultSet一样,接受返回的结果集,不过这里接受的是所有fetchall(),主要返回结果集是两个嵌套的元组。里面的每一个元组是每一行的小集合。 try: for row in result: #按照名字与元组下标相对齐 uId = row[0] uName = row[1] uSex = row[2] uCollege = row[3] print(str(uId) + '\t' + str(uName) + '\t' + str(uSex) + '\t' + str(uCollege)) except Exception as e: print(e) finally: # 注意关闭游标和数据库 cursor.close() db.close()
-
携带where条件查询单条数据
cursor = db.cursor() sql = "select uId,uName,uSex,uCollege from user where uSex='男' limit 2 offset 1" cursor.execute(sql) results = cursor.fetchall() try: for row in results: uId = row[0] uName = row[1] uSex = row[2] uCollege = row[3] print(str(uId) + '\t' + str(uName) + '\t' + str(uSex) + '\t' + str(uCollege)) except Exception as e: print(e) finally: cursor.close() db.close()
-
insert插入操作
cursor = db.cursor() # 使用游标的execute()方法执行SQL查询 sql = "insert into user(uId,uName,uSex,uCollege) values ('7','竹风','男','信科院')" try: db.begin() cursor.execute(sql) db.commit() print("插入成功") except Exception as e: print(e) db.rollback() finally: cursor.close() db.close()
插入成功。
-
更新操作
cursor = db.cursor() sql = "update user set uName='竹露' where uId='7'" try: db.begin() cursor.execute(sql) db.commit() print("更新成功") except Exception as e: print(e) db.rollback() finally: cursor.close() db.close()
-
删除
cursor = db.cursor() sql = "delete from user where uId='7'" try: db.begin() cursor.execute(sql) db.commit() print("删除成功") except Exception as e: print(e) db.rollback() finally: cursor.close() db.close()
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构