mysql与python的交互 pymysql

19 篇文章 0 订阅
8 篇文章 0 订阅

mysql与python的交互 pymysql

主键写0,null,default都自动递增
不是主键,默认,只能写default

1.拆为多个表

先创建一个新的表 if not exists 如果原来不存在就建立表

写入:insert into good_cates (name) select good_cates from good group by good_cates;

关联替换、同步

updata goods as g inner join good_cates as c on g.at_name = c.name
set g.cat_name = c.id;
两张表替换了也要替换字段的名字类型

设外键

alter table good add foreign key(cate_id) references good_cate(id);
取消外键 alter table drop foreign key 外键名称
极少使用外键,因为表的更新受外键关联,影响效率

创建插入一气呵成

2.pymysql

让写的代码当客户端写sql发给server
创建连接connect 获取游标cursor(特殊对象用于存储结果之类的) 记录了已取了哪些没有取哪些 游标
执行命令获取数据处理数据
关闭游标
关闭连接

2.1查询

execute 执行成功返回行数
fetch__查出的是一个元组 execute.fetchall

注册登录:写/查

2.2 添加修改删除

要修改数据库,所以要提交
commit提交,只有提交了数据库才会改动
conn.commit()
conn.rollback() 返回取消不提交
但是只要有execute increment就会递增

3.防止sql注入

百度一下了解更多 wooyun
不让用户拼接字符串
pymysql添加了构造参数列表
把要输入的数据放入列表

sql语句的参数化,可以有效防止sql注入

 安全的方式
    # 构造参数列表
    params = [find_name]
    # 执行select语句,并返回受影响的行数:查询所有数据
    count = cs1.execute('select * from goods where name=%s', params)
    # 注意:
    # 如果要是有多个参数,需要进行参数化
    # 那么params = [数值1, 数值2....],此时sql语句中有多个%s即可 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值