mysql与python的交互 pymysql

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即可 

猜你喜欢

转载自blog.csdn.net/JessePinkmen/article/details/83477370