首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >python3连接MySQL的工具类

python3连接MySQL的工具类

作者头像
静谧星空TEL
发布2022-01-05 21:50:00
发布2022-01-05 21:50:00
1.8K0
举报

目录

一、环境准备

1、python3安装

2、MySQL安装

二、安装驱动

1、pymogo驱动安装

2、pymogo驱动测试

三、py工具类

1、工具脚本

一、环境准备

1、python3安装

windows离线安装python3.6.8环境:https://cloud.tencent.com/developer/article/1929280

2、MySQL安装

Linux 离线安装 python 3.6.10:https://cloud.tencent.com/developer/article/1818613

win10安装MySQL5.7.22 32位:https://cloud.tencent.com/developer/article/1818685

二、安装驱动

1、pymogo驱动安装

代码语言:javascript
复制
pip install pymysql

2、pymogo驱动测试

代码语言:javascript
复制
python
import pymysql

三、py工具类

1、工具脚本

代码语言:javascript
复制
# -*- encoding: utf-8 -*-

import pymysql

class MySQLUtil:
    """
    MySQL工具类
    """
    def __init__(self, host="127.0.0.1", user=None, passwd=None, db=None, charset="utf8", *args, **kwargs):
        """构造函数"""
        self.__host = host
        self.__user = user
        self.__passwd = passwd
        self.__db = db
        self.__conn = pymysql.connect(host=host, user=user, passwd=passwd, db=db, charset=charset, *args, **kwargs)
        self.__cursor = self.__conn.cursor()

    def __del__(self):
        """析构函数"""
        self.__cursor.close()
        self.__conn.close()

    def get_conn(self):
        """获取连接"""
        return self.__conn

    def get_cursor(self, cursor=None):
        """获取游标"""
        return self.__conn.cursor(cursor)

    def select_db(self, db):
        """选择数据库"""
        self.__conn.select_db(db)

    def list_databases(self, args=None):
        """查询所有数据库"""
        self.__cursor.execute("SHOW DATABASES", args)
        dbs = []
        for db in self.__cursor.fetchall():
            dbs.append(db[0])
        return dbs

    def list_tables(self, args=None):
        """查询所有表"""
        self.__cursor.execute("SHOW TABLES", args)
        tables = []
        for table in self.__cursor.fetchall():
            tables.append(table[0])
        return tables

    def execute(self, sql, args=None):
        """获取SQL执行结果"""
        self.__cursor.execute(sql, args)
        return self.__cursor.fetchall()

    def get_version(self, args=None):
        """获取MySQL版本"""
        self.__cursor.execute("SELECT VERSION()", args)
        version = self.__cursor.fetchone()
        print("MySQL Version : %s" % version)
        return version

    def list_table_metadata(self, args=None):
        """查询所有表的元数据信息"""
        sql = "SELECT * FROM information_schema.TABLES WHERE TABLE_TYPE !='SYSTEM VIEW' AND TABLE_SCHEMA NOT IN ('sys','mysql','information_schema','performance_schema')"
        self.__cursor.execute(sql, args)
        return self.__cursor.fetchall()

    def get_table_fields(self, db, table, args=None):
        """获取表字段信息"""
        sql = 'SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE table_schema="'+db+'" AND table_name="'+table+'"'
        self.__cursor.execute(sql, args)
        fields = []
        for field in self.__cursor.fetchall():
            fields.append(field[0])
        return fields

    def table_metadata(self, db, table, args=None):
        """查询表字段的元数据信息"""
        db = "'" + db + "'"
        table = "'" + table + "'"
        sql = """
        SELECT 
            column_name,column_type,ordinal_position,column_comment,column_default 
        FROM 
            information_schema.COLUMNS 
        WHERE 
            table_schema = %s AND table_name = %s;
        """ % (db, table)
        self.__cursor.execute(sql, args)
        return self.__cursor.fetchall()


if __name__ == "__main__":
    mysqlUtil = MySQLUtil("127.0.0.1", "root", "123456", "test")
    mysqlUtil = MySQLUtil(host="127.0.0.1", user="root", passwd="123456", db="test")
    mysqlUtil.get_version()
    dbs = mysqlUtil.list_databases()
    print(dbs)
    conn = mysqlUtil.get_conn()
    mysqlUtil.select_db("test")
    print(type(conn.db), conn.db)
    databases = mysqlUtil.list_databases()
    print(type(databases), databases)
    tables = mysqlUtil.list_tables()
    print(type(tables), tables)
    sql = "SELECT * FROM t_user"
    result = mysqlUtil.execute(sql)
    for i in result:
        print(i)
    result = mysqlUtil.table_metadata("test", "t_user")
    result = mysqlUtil.get_table_fields("test", "t_user")
    for i in result:
        print(i)

执行结果

MySQL Version : 5.7.22

<class 'bytes'> b'test'

(1, '科比', 10)

(2, '麦迪', 20)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/03/04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、环境准备
    • 1、python3安装
    • 2、MySQL安装
  • 二、安装驱动
    • 1、pymogo驱动安装
    • 2、pymogo驱动测试
  • 三、py工具类
    • 1、工具脚本
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档