python持久化操作-MySQL篇

python持久化操作MySQL篇

一般python中连结MySQL的方式有一下四种:

1.MySQL Connector
MySQL官方提供的驱动
2.MySQLdb
MySQL-python又叫MySQLdb,是python连接MySQL最流行的一个驱动,遗憾的是它只支持python2.x,而且安装的时候有很多前置条件,因为它是基于C开发的库,在windows平台安装非常不友好,经常出现失败的情况,现在基本不推荐使用,取代的是他的衍生版本.
3.torndb
torndb是一个轻量级的基于MySQL封装的一个模块,使用之前必须成功安装了MySQL模块.
4.pymysql
支持python3.x.使用方法几乎和MySQLdb相同.

以上三个模块均对python3.x支持不是很友好,考虑到python3.x是python未来的趋势,这里主要介绍pymysql模块.

1.安装pymysql

介绍三种方法:
a,进入python文件夹的scripts目录,在其路径上打开cmd,输入 ‘pip install pymysql’
b,进入pycharm虚拟机,点击下方Terminal,,,输入’pip install pymysql’
c,pycharm–settings–project–project interpreter–+–输入–install package

2.pymysql具体用法

2.1在navicat中创建一个products库,新建一个commoditytype表,插入两列数据.
这里写图片描述
2.2插入数据
代码:

import pymysql#导入模块
def getcon():#定义函数,便于调用
    conn=pymysql.connect(host='127.0.0.1',user='root',passwd='qwertyuiop123',db='products')#创建连接
    return conn
    -------------
def insertdata():
    conn=getcon()#调用getcon函数,创建连接
    sql="insert into commoditytype values('%d','%s')"#sql语句
    cur=ca.cursor()#创建游标对象
    cur.execute(sql % data)#执行插入的sql语句
    #cur.execute("insert into commoditytype values('6 ','动物')")#作用同3,5,9行,另一种表达方式
    ca.commit()#将操作上传至数据库,查询操作不需要此命令
    print('数据插入成功')
data = (6, '动物')
insertdata()
cur.close()#关闭游标
conn.close()#关闭数据库连接

结果:
这里写图片描述
2.3查询数据

def searchAll():
    conn=getcon()
    cur=conn.cursor()
    cur.execute('select*from commoditytype')
    data=cur.fetchall()#.fetchone查询一条,fetchmany(size)查询指定数量的数据行
    print(data)#此处打印data,便于理解遍历
    for i in data:`这里写代码片`
        for j in i:
            print(j,end='\t')#end='\t'以制表符连接
        print()#内循环完成一次进行换行
searchAll()

结果:
这里写图片描述
2.4修改数据

def modifyDATA(data):
    conn=getcon()
    sql="update commoditytype set ct_name='%s' where  ct_id='%d'"
    cur=conn.cursor()
    cur.execute(sql%data)
    conn.commit()
    print('数据修改成功')
data=('植物',6)
modifyDATA(data)

结果:
这里写图片描述
2.5删除数据

def deleteDATA(ct_id):
    conn=getcon()
    sql= "delete from commoditytype where ct_id='%d'"
    cur=conn.cursor()
    cur.execute(sql % ct_id)
    conn.commit()
deleteDATA(6)

结果:
这里写图片描述
2.6优化查询数据显示

import json#导入json模块
def searchMany():
    conn=getcon()#调用函数,省略代码见'插入数据'
    cur=conn.cursor()
    cur.execute('select * from commoditytype')
    data=cur.fetchmany(3)
    print(data)#结果以元组形式显示
    print(json.dumps(data,ensure_ascii=False))#json.dump将结果以列表形式显示
    for row in data:
        print(json.dumps(row,ensure_ascii=False))
searchMany()

结果:
这里写图片描述

注:
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。

猜你喜欢

转载自blog.csdn.net/weixin_38605146/article/details/81030977