MySQL与Python交互

MySQL与Python交互

准备数据

  • 创建数据库
create database if not exists Content;
  • 创建数据表
-- 创建一个商品 goods 数据表
CREATE TABLE `goods` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `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.000',
  `is_show` tinyint(4) NOT NULL DEFAULT '1',
  `is_saleoff` tinyint(4) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  • 插入数据
-- 插入数据
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 primary key auto_increment not null, name varchar(30) not null);
  • 将商品表中的商品种类查询并插入到商品分类表里
-- 注意:并不需要使用到values字段来进行数据插入
insert into goods_cates(name) select cate_name from goods group by cate_name;
  • 将商品表中的商品种类更改为商品表分类表对应的ID
update good inner into goods_cates on good.cate_name=goods_cates.name set good.cate_name=good_cates.id;

安装pymysql

pip install pymysql 

Python操作MySQL步骤

在这里插入图片描述

Connection 对象

  • 用于建立与数据库连接
  • 创建对象 :调用connect()方法
  • cursor() : 返回Cursor对象,用于执行sql语句并获得结果

Cursor对象

  • 用于执行sql语句,使用频度最高的语句为select、insert、update、delete
  • 获取cursor对象:调用Connection对象的cursor()方法----参考源码

对象方法

注意:在进行插入操作的时候,如果是InnDB引擎的话,记得使用commint来进行提交事务,其他引擎不需要使用

  • close() : 关闭,先关闭游标,在关闭连接
  • execute(operation [,paramenters]) : 执行语句,返回受影响的行数,主要用于执行insert 、update、delete语句,也可以执行create、alter、drop等语句
  • commint : 提交事务

python操作mysql

使用面向对象完成商品查询
• 输入1:查询所有商品
• 输入2:所有商品种类
• 输入3:查询所有品牌
• 输入4:退出
• 输入5:插入数据
# -*- coding: utf-8 -*-
# Author : Small-J
# 2021/1/27 6:18 下午

"""
练习2:
使用面向对象完成商品查询
• 输入1:查询所有商品
• 输入2:所有商品种类
• 输入3:查询所有品牌
• 输入4:退出
• 输入5:插入数据
"""

import pymysql


class MySQL(object):
    def __init__(self):
        """
        this is Initialization mysql connection
        创建数据库连接对象
        """
        self.conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='root', database='Job')
        self.cursor = self.conn.cursor()

    def select_api(self, sql) -> None:
        """
        query call interface
        :param sql: this is sql sentence
        :return: print all data
        """
        self.cursor.execute(sql)
        return print(self.cursor.fetchall())

    def select_data(self):
        """输入1,查询所有商品"""
        sql = "select * from goods;"
        return self.select_api(sql)

    def select_goods__two(self):
        """输入2,查询所有商品的种类"""
        sql = "select cate_name from goods group by cate_name"
        return self.select_api(sql)

    def select_goods_cates_three(self):
        """输入3,查询所有品牌"""
        sql = "select * from goods_cates"
        return self.select_api(sql)

    def insert_goods_cates_data(self):
        """输入5, 插入数据"""
        sql = "insert into goods_cates(name) values (%s)"
        args = ('小霸王学习机', )
        self.cursor.execute(sql, args)
        self.conn.commit()

    def input_number(self):
        while True:
            print('输入1:查询所有商品')
            print('输入2:所有商品种类')
            print('输入3:查询所有品牌')
            print('输入4:退出')
            print('输入5:插入数据')
            print('-'*100)
            num = int(input("请输入你要输入的数字 :"))
            if num == 1:
                self.select_data()
            elif num == 2:
                self.select_goods__two()
            elif num == 3:
                self.select_goods_cates_three()
            elif num == 4:
                print('see you')
                break
            elif num == 5:
                self.insert_goods_cates_data()
            else:
                raise ValueError('Please enter a vaid number')

    def __del__(self):
        self.conn.close()
        self.cursor.close()

    def run(self):
        """主程序入口"""
        self.input_number()
        # self.select_data()


if __name__ == '__main__':
    mysql = MySQL()
    mysql.run()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值