创建数据表
-- 创建⼀个商品 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,3) 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_cates(id int unsigned primary key auto_increment not null,name varchar(40) not null);
将 商品表 中的 商品种类 查询并插⼊到 商品分类表 ⾥
insert into goods_cates (name) select cate_name from goods group by cate_name;
将 商品表 中的 商品种类 更改为 商品表分类表 对应的 id
update goods as g inner join goods_cates as c on g.cate_name=c.name set g.cate_name=c.id;
安装pymysql:pip install pymysql
Python操作MySQL步骤
Connection 对象
⽤于建⽴与数据库的连接 ,创建对象:调⽤ connect() ⽅法
conn=connect(参数列表)
"""
参数host:连接的mysql主机,如果本机是'localhost'
参数port:连接的mysql主机的端⼝,默认是3306
参数database:数据库的名称
参数user:连接的⽤户名
参数password:连接的密码
参数charset:通信采⽤的编码⽅式,推荐使⽤utf8
"""
import pymysql
con = pymysql.connect(host = 'localhost',port=3306,database='python-01',user='root',password = 'root',charset = 'utf8')
from pymysql import *
conn = connect(host = 'localhost',port=3306,database='python-01',user='root',password = 'root',charset = 'utf8')
Connection对象的⽅法
close()关闭连接
commit()提交
cursor()返回Cursor对象,⽤于执⾏sql语句并获得结果
Cursor对象
⽤于执⾏sql语句,使⽤频度最⾼的语句为select、insert、update、delete
获取Cursor对象:调⽤Connection对象的cursor()⽅法
cs1=conn.cursor()
Cursor对象的⽅法
close()关闭 先关闭游标,在关闭链接
execute(operation [, parameters ])执⾏语句,返回受影响的⾏数,主要⽤于执⾏insert、update、delete语句,也可以执⾏create、alter、drop等语句
fetchone()执⾏查询语句时,获取查询结果集的第⼀个⾏数据,返回⼀个元组
fetchall()执⾏查询时,获取结果集的所有⾏,⼀⾏构成⼀个元组,再将这些元组装⼊⼀个元组返回
使⽤Python连接数据库
from pymysql import *
try:
conn = connect(
host = "localhost",
port = 3306,
user = "root",
passwd = "root",
db = 'logic_web',
charset = 'utf8'
)
cursor = conn.cursor()
cursor.execute('select * from users_banner')
result = cursor.fetchone()
cursor.close()
conn.close()
except Exception as e:
print("Error %d:%s"%(e.args[0],e.args[1]))