美文网首页python爬虫
Python操作Mysql数据库(持续更新)

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

作者: 记事本的记事本 | 来源:发表于2018-06-10 18:05 被阅读108次

入门篇
首先安装 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()

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


数据库截图

讲一下下方的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()

未完待续....持续更新

相关文章

网友评论

  • 44d681590c59:我觉得作为工具类,他只负责执行语句与返回结果,其他他不做处理,但是我看到你的代码好像不是,我是个python小白,个人意见
    记事本的记事本:@nullPorintExp 封装起来在做项目的时候比较好用,纯属个人习惯 并且在使用时可以自己订制自己的数据库处理,不至于再使用时候,重复书写代码。
  • 44d681590c59:你这个是想写数据库连接的工具类吗
    44d681590c59:但是个人感觉,工具类,只负责执行和返回,是吧重复做的事情提出来,但是,查询和修改,删除不都是执行sql吗,这个有啥区别吗?为什么要分装不同的方法
    记事本的记事本:@nullPorintExp 对的哈哈这几天太忙了 还没完善

本文标题:Python操作Mysql数据库(持续更新)

本文链接:https://www.haomeiwen.com/subject/dicqeftx.html