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()
-