笔记七Python pymysql的基本使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

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'}]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

九丶黎

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

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

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

打赏作者

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

抵扣说明:

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

余额充值