Python操作Mysql数据库(持续更新)

入门篇
首先安装 pymsql
然后 pip install pymsql

初次使用的时候
插入数据
import pymysql.cursors
#连接数据库
connection = pymysql.connect(host='localhost',user ='root',password='123456',db='javaweb',charset='utf8mb4')
try:
    #获取会话指针
    with connection.cursor() as cursor:
        #创建sql语句
        sql = "insert into zc (name,psw,email) values(%s,%s,%s)"
        #使用execute传参数
        cursor.execute(sql,('5','6','7'))
        #cursor.execute("insert into zc (name,psw,email) values(%s,%s,%s)",['a','b','c'])
        #执行
        connection.commit()

finally:
    #最终关闭
    connection.close()

查询数据
#导入开发包
import pymysql.cursors

#获取链接
connection = pymysql.connect(host='localhost',user ='root',password='123456',db='javaweb',charset='utf8mb4')
try:
    #获取会话指针
    with connection.cursor() as cursor:
        #查询语句
        sql = "select *  from zc"

        conut = cursor.execute(sql)

        #使用fetchall获取所有查询,然后打印
        result = cursor.fetchall()
                
        print(result)
        #cursor.execute("insert into zc (name,psw,email) values(%s,%s,%s)",['a','b','c'])
        #执行
        connection.commit()
finally:
    #最终关闭
    connection.close()



接下来封装一个查询类 并逐步完善

先讲一下思路,python在连接数据库时候
1.首先连接

def get_conn(self):#连接数据库
        try:
            self.connection = pymysql.connect(host='localhost',user ='root',password='123456',db='javaweb',charset='utf8mb4')
        except:
            print('数据库连接错误')

2.建立sql语句

sql = "select *  from zc"

3.找到cursor

cursor = self.connection.cursor()

4.执行语句

cursor.execute(sql)

5.拿到结果

rest = cursor.fetchone()

6.数据处理

rest = dict(zip([k[0] for k in cursor.description],rest))

7.关闭会话

 cursor.close()

8.关闭数据库连接

self.close_conn()

封装时,把连接做一个函数,关闭做一个函数,查询做一个函数,然后就可以调用了

《Python操作Mysql数据库(持续更新)》 数据库截图

讲一下下方的zip 函数

cursor.description 方法 ,返回所有表项的类型,返回的是一个元组

(('name', 253, None, 200, 200, 0, False), ('psw', 253, None, 200, 200, 0, False), ('email', 253, None, 200, 200, 0, False))

那么怎根据索引输出相对应的值呢 ,
解决方案

dict(zip([k[0] for k in cursor.description],rest))
#k[0] for k in cursor.description  输出表项的 ['name', 'psw', 'email'] 组成一个列表
#a=k[0] for k in cursor.description
#b=('dzc', '123', '12345678@qq.com')
#zip(a,b)后 变成[('name','dzc'),('psw','123'),('email','12345678@qq.com)']
#然后强制转换类型dic 变成了字典 
#那么有以下rest['name']的调用 
#返回dzc

完整代码如下 ,持续更新,路过的有用的话点下关注 ,干货满满,博主本人自己是学生,更新速度会很快,愿我们一起进步。

import pymysql.cursors

class MysqlSearch(object):#创建MysqlSearch类并继承object对象
    def __init__(self):#初始化调用连接数据库
        self.get_conn()
    def get_conn(self):#连接数据库
        try:
            self.connection = pymysql.connect(host='localhost',user ='root',password='123456',db='javaweb',charset='utf8mb4')
        except:
            print('数据库连接错误')
    def close_conn(self):#关闭连接数据库
        try:
            if self.connection:#这里加个判断,如果已经关闭后就不进行关闭了
                #关闭连接
                self.connection.close()
        except:
            print('关闭连接错误')
    def get_one(self):
        #准备sql
        sql = "select *  from zc"
        #找到cursor
        cursor = self.connection.cursor()
        #执行sql
        cursor.execute(sql)
        print(cursor.description)
        #print(cursor.rowcount) #查询数据一共多少行
        #拿到结果
        rest = cursor.fetchone()
        print(rest)
        rest = dict(zip([k[0] for k in cursor.description],rest))
        #处理数据
        print(rest['name'])
        #关闭连接
        cursor.close()
        self.close_conn()
    def get_more(self):
        a=1

def main():
    obj =MysqlSearch()
    obj.get_one()
if __name__ =='__main__':
    main()

未完待续….持续更新

    原文作者:记事本的记事本
    原文地址: https://www.jianshu.com/p/3f52a54d4fa8
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞