首页 > 技术文章 > Python之mysq的l操作与封装

luoye1 2022-01-06 20:39 原文

一、pymsql 安装

pip install pymysql

二、pymysql 包引入

import pymysql

三、mysql之简单操作

import pymysql

#1、连接mysql数据-占用数据库资源
db = pymysql.connect(       # 实例化连接,对象接收
host="api.huuyaa.com", # 数据库主机地址
user="future", # 登录数据库的账号
password="XXXXXXX", # 登录数据库的密码
port=3306, # 端口
database="XXXXXX", # 数据库名称
charset="utf8", # 编码格式
cursorclass=pymysql.cursors.DictCursor # cursorclass运行生成的是元祖,我们把它设置转换成字典形式
)

# 2、创建游标:游标默认是放在第一行,如果读到第5行,是不会自动返回到第一行的
cur = db.cursor()

# 3、执行sql语句
sql = "select id from member where mobile_phone='133XXXXXXXX'"
##使用execute()方法进行查询,返回的是,sql语句执行结果的行数
cur.execute(sql)

# sql = "select id from member where mobile_phone='%s'"
# cur.execute(sql,('133XXXXXXXX',)) # 使用这个号码替换占位符


# 返回的是affected_rows表示执行后的结果:查询的结果 有多少条数据
affected_rows = cur.execute(sql)

# 4、获取查询的结果
# 获取第一个结果。返回是一个字典。
# data = cur.fetchone()
# cur.fetchmany(size=2) # 获取前2行

# 获取所有的结果。返回的是一个列表。
data = cur.fetchall()
print(data)

# 5、关闭游标、关闭数据库连接
cur.close()
db.close()


四、mysql 封装

#封装数据库操作
import pymysql
import os

from common.myConf import MyConf
from common.my_path import conf_dir

class MyMysql:

    def __init__(self):
        """
    这样是写死的,做的很不灵活,所以我们做成可配置的
    db = pymysql.connect(    # 实例化连接,对象接收
    host="api.huuyaa.com",   # 数据库主机地址
    user="future",           # 登录数据库的账号
    password="xxxxxx",       # 登录数据库的密码
    port=3306,                # 端口
    database="xxxxxxx",       # 数据库名称
    charset="utf8",           # 编码格式
    cursorclass=pymysql.cursors.DictCursor # cursorclass   运行生成的是元祖,我们把它设置转换成字典形式
)
        """
        # 实例化配置类对象
        conf = MyConf(os.path.join(conf_dir, "mysql.ini"))
        # 连接数据库/生成游标
        self.db = pymysql.connect(
            host=conf.get("mysql", "host"),
            user=conf.get("mysql", "user"),
            password=conf.get("mysql", "passwd"),
            port=conf.getint("mysql", "port"),
            database=conf.get("mysql", "database"),
            charset="utf8",
            cursorclass=pymysql.cursors.DictCursor
        )

        # 2、创建游标
        self.cur = self.db.cursor()

    def get_count(self,sql):
        count = self.cur.execute(sql)
        return count

    def get_one_data(self,sql):
        self.cur.execute(sql)
        return self.cur.fetchone()

    def get_many_data(self,sql, size=None):
        self.cur.execute(sql)
        if size:
            return self.cur.fetchmany(size)
        else:
            return self.cur.fetchall()

    # def update_data(self):
    #     事务
    #     提交commit  回滚 rollback
    #     pass

    def close_conn(self):
        self.cur.close()
        self.db.close()

if __name__ == '__main__':
    conn = MyMysql()
    sql = "select id from member where mobile_phone='13350000000'"
    count = conn.get_count(sql)
    print(count)
    conn.close_conn()

 

推荐阅读