MySql与Python的交互

数据准备

--创建jd数据库
create database jd charset=utf8;

--使用jd数据库
use jd;

--创建商品goods表
create table goods(
    id int unsigned primary key auto_increment not null,
    name varchar(150) not null,
    cate_name varchar(40) not null,
    brand_name varchar(40) not null,
    price decimal(10,2) not null default 0,
    is_show tinyint not null default 1,
    is_saleoff tinyint not null default 0
);

--插入数据
insert into goods values(0,'r510vc 15.6英寸笔记本','笔记本','华硕','3399',default,default); 
insert into goods values(0,'y400n 14.0英寸笔记本电脑','笔记本','联想','4999',default,default);
insert into goods values(0,'g150th 15.6英寸游戏本','游戏本','雷神','8499',default,default); 
insert into goods values(0,'x550cc 15.6英寸笔记本','笔记本','华硕','2799',default,default); 
insert into goods values(0,'x240 超极本','超级本','联想','4880',default,default); 
insert into goods values(0,'u330p 13.3英寸超极本','超级本','联想','4299',default,default); 
insert into goods values(0,'svp13226scb 触控超极本','超级本','索尼','7999',default,default); 
insert into goods values(0,'ipad mini 7.9英寸平板电脑','平板电脑','苹果','1998',default,default);
insert into goods values(0,'ipad air 9.7英寸平板电脑','平板电脑','苹果','3388',default,default); 
insert into goods values(0,'ipad mini 配备 retina 显示屏','平板电脑','苹果','2788',default,default); 
insert into goods values(0,'ideacentre c340 20英寸一体电脑 ','台式机','联想','3499',default,default); 
insert into goods values(0,'vostro 3800-r1206 台式电脑','台式机','戴尔','2899',default,default); 
insert into goods values(0,'imac me086ch/a 21.5英寸一体电脑','台式机','苹果','9188',default,default); 
insert into goods values(0,'at7-7414lp 台式电脑 linux )','台式机','宏碁','3699',default,default); 
insert into goods values(0,'z220sff f4f06pa工作站','服务器/工作站','惠普','4288',default,default); 
insert into goods values(0,'poweredge ii服务器','服务器/工作站','戴尔','5388',default,default); 
insert into goods values(0,'mac pro专业级台式电脑','服务器/工作站','苹果','28888',default,default); 
insert into goods values(0,'hmz-t3w 头戴显示设备','笔记本配件','索尼','6999',default,default); 
insert into goods values(0,'商务双肩背包','笔记本配件','索尼','99',default,default); 
insert into goods values(0,'x3250 m4机架式服务器','服务器/工作站','ibm','6888',default,default); 
insert into goods values(0,'商务双肩背包','笔记本配件','索尼','99',default,default);

数据表的拆分

数据表的拆分有很多方法,比如范围法,哈希法等,刚开始学数据库先介绍一下分表的思想。

从字面上理解,分表就是把一个表拆分开,把原本存储在一个表上的数据拆分到多个表上

为什么要分表呢?
数据库中数据量不一定是可控的,随着时间的推移,数据库中库越来越多,表中的信息越来越多,相应的增删改查的开销也越来越大;由于无法进行分布式部署,而一台服务器可使用的资源又是有限的,最终数据库所能承受的数据量,数据处理能力都将遇到瓶颈。

我们对上面创建的表进行分表

--创建商品分类表
create table goods_cate(
    id int unsigned primary key not null auto_increment,
    name varchar(40) not null
);

--查询goods表中商品的种类
select cate_name from goods group by cate_name;

--将分组结果写入goods_cate表中
insert into goods_cate (name) select cate_name from goods group by cate_name;

--同步数据
    --通过goods_cate表来更新goods表
    update goods as g inner join goods_cate as c on g.cate_name=c.name set g.cate_name=c.id;

python操作mysql

安装pymysql
python3:pip install pymysql

python 操作 MySql步骤

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1JVPywrT-1575784715023)(256CC2CAC6424B4AA479AD2229F1D58F)]

connection
用于建立数据库的链接

coon=connect(参数)

  • 参数host:链接mysql主机,如果是本地用’localhost’
  • 参数part:链接mysql主机的端口,端口号3306
  • 参数database:数据库名称
  • 参数user:连接用户名
  • 参数password:链接密码
  • 参数charset:通信采用的编码方式,推荐utf8
from pymysql import *

conn = connect(host='localhost', port=3306, database='jd', user='root', password='root', charset='utf8')

对象的方法

  • close()关闭
  • commit()提交
  • cursor()返回Cursor对象,用于执行sql语句并获得返回结果

Cursor对象

  • 用于执行sql语
  • 获取cursor对象:调用Connection对象的cursor()方法
cs1 = conn.cursor()

对象的方法

  • close():先关闭游标再关闭连接
  • execute(operation[,parameters]):执行语句,返回受影响的行数
  • fetchone():执行查询语句时,获取查询结果集的第一行数据,返回一个元组
  • fetchall():执行查询语句时,获取全部结果集,一行构成一个元组,再将这些元组装入一个元组返回

使用python连接数据库

from pymysql import *

try:
    conn = connect(host='localhost', port=3306, database='jd', user='root', password='root', charset='utf8')
    cursor = conn.cursor()
    cursor.execute('select * from goods')
    r = cursor.fetchall()
    cursor.close()
    conn.close()
    print(r)
except Exception as e:
    # print(e)
    print('error:%d:%s'%(e.args[0],e.args[1]))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值