提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、mysql的基本语法
- 二、python pymsql库的基本使用
前言
提示:这里可以添加本文要记录的大概内容:
pymysql的基本使用
提示:以下是本篇文章正文内容,下面案例可供参考
一、mysql的基本语法
# 创建数据库
create database jiuli;
# 删除数据库
drop database jiuli;# 切换或选择使用的数据库
use jiuli;# 创建表格
create table stu(s_id int(10) primary key auto_increment, # 主键id,不允许重复的.唯一的,自动增加s_name varchar(255) not null, # varchar字符串s_date date, # date日期s_money decimal(5,2) # decimal 小数
);添加数据
insert into 表(字段1,字段2,字段3...) values('值1','值2','值3'...); # 引号,代表的是数字,并不一定是`字符串`
实列:
inser into stu(s_name,s_date,s_money) values('九黎','1996-09-06','3.56');删除数据
删除必须给条件
语法规则:delete from 表 where 条件
delete from stu where s_id = '3'; # 删除s_id==3的学生修改数据
update 表 set 字段1 = '值1',字段2= '值2'... where 条件
update stu set s_name = '母老虎', s_money = 6.66 where s_id = '4';查数据
基本的查询逻辑
语法规则:select * |字段1,字段2 from 表 where 条件;
select * from stu; # 把要检索的数据.抽出来返回给你# =,!=,>,<,>=,<=,between and,in ,not in# = 相等的数据会被检索
select * from stu where s_name = "九黎";
# != 不相等的数据会被检索
select * from stu where s_name != "九黎";
# between and 在xxx与xxx之间
select * from stu where s_money BETWEEN 3 and 5;
# in 在xxx集合当中
select * from stu where s_name in ['九黎','灵儿'];
二、python pymsql库的基本使用
python pymsql库插入数据
# pip install pymysql
import pymysql
"""
pymysql默认开启事务:
1. 扣钱
2. 给人加钱
3. 记录转账信息
上述逻辑 是一个完整的一件事儿,其中任何要不出问题,都不应该视作结束.应该回归到原始状态.
必须得是上诉所有逻辑都不出错.才视为事件结束.
上述逻辑 就是事务事务:1. 提交最后一件事儿,完成了.之前的所有步骤的数据.要统一写入数据库2. 回滚其中任何一件事儿,出问题,应该回归到操作之前的状态.
"""
# 1 建立连接
# conn = pymysql.connect(
# host="localhost",
# user="root",
# password="123456",
# port=3306,
# database="my"
# )
# 1045 "Access denied " 密码错误
# print(conn)# 创建游标(用到statement)
# cursor = conn.cursor()
# try:
# # 2. 操作数据库
# # 2.1 添加/修改/删除 数据
# # 写sql语句 -> 高亮的显示 本质是字符串
# sql = "insert into stu(s_name,s_date,s_money) values('志刚','1998-6-06','3.96')"
# # 去执行这个sql
#
# # 用游标执行sql语句
# cursor.execute(sql)
#
#
# # 提交事务 吧数据写入数据库
# conn.commit()
# print("完成")
# except Exception as e:
# print(e)
# # 出错了 不应该写入数据库, 应该回滚到操作之前的样子
# conn.rollback() # 回滚
# finally:
# # 关闭游标和断开连接
# cursor.close()
# conn.close()# 3. 查询
conn = pymysql.connect(host="localhost",user="root",password="123456",port=3306,database="my"
)
cursor = conn.cursor()
def save_to_db(s):# 网络安全方面,这样写sql是又被注入的风险的# sql = f"insert into stu(s_name,s_date,s_money) values('{name}','{birth}','{money}')"# 预处理 可以解决sql注入问题sql = "insert into stu(s_name,s_date,s_money) values(%s,%s,%s)" # 这里的%s并不是python的字符串格式化# cursor.execute(sql,数据)cursor.execute(sql,s)datas = [('志刚1','1998-6-06','3.96'),('志刚2','1998-6-06','3.96'),('志刚3','1998-6-06','3.96')
]
try:for d in datas:# 写入数据库save_to_db(d)conn.commit()
except Exception as e:print(e)conn.rollback()cursor.close()
conn.close()
python pymsql库查询数据
import pymysql
from pymysql.cursors import DictCursor
conn = pymysql.connect(host="localhost",user="root",password="123456",port=3306,database="my"
)# 登录逻辑
cursor = conn.cursor()
username = input("填写用户名:")
password = input("填写密码:")
sql = f"select * from user where username = %s and password = %s"
#如何能查到东西就是登录成功ret = cursor.execute(sql,(username,password))
# 读取查询结果
print(cursor.fetchall())# 查询
# cursor = conn.cursor(DictCursor)
# # cursor = conn.cursor()
# sql = "select * from user"
# cursor.execute(sql)
# print(cursor.fetchall())
# ((1, 'admin', '123456', None, '10086'), (2, 'qiaofu', '123', None, '10010'), (3, 'zhuye', '666', '666', '666'))
#[{'id': 1, 'username': 'admin', 'password': '123456', 'email': None, 'phone': '10086'}, {'id': 2, 'username': 'qiaofu', 'password': '123', 'email': None, 'phone': '10010'}, {'id': 3, 'username': 'zhuye', 'password': '666', 'email': '666', 'phone': '666'}]