Python数据库封装

1、第一步:连接数据库

  • 连接数据库需要获取连接信息:ip地址,端口,数据库名,用户名、密码
    数据库地址:mall.lemonban.com
    用户名和密码:lemon_auto lemon!@123
    端口默认:3306
    数据库名字: yami_shops

2、第二步:获取游标 ( 进行sql查询之前,先要获取游标)

  • 游标:进度指针,读到哪一行数据 游标在哪一行; 如果后面继续读取,从游标的当前位置开始。

3、第三步:执行sql,基于游标
1)对于查询sql,不会得到结果集,, 得到查询结果的数量。

  • 如果result(数量)= 0,表示没有查到符合条件的数据。
  • 如果result(数量)>0 , sql有查询到数据。 – 可以进一步去获取具体的查询结果集。
    2)对于增删改sql,得到影响行数。

4、第四步:获取查询结果: 注意是从游标位置取数据,默认保存为元组。
cur.fetchone() – # 从查询结果集当中,获取一条数据
cur.fetchmany(size=行数) — # 从查询结果集当中,获取指定条数的数据。

  • size如果不传,默认就是一条数据。
    cur.fetchall() — # 从查询结果集当中,获取所有的数据。

5、第五步: 关闭数据库连接
-关闭游标 :得到结果后,需要关闭这个游标。
-数据库连接数是有限制的,所以用完这个连接,需要关闭连接。
补充:注意直接获取的结果是元组格式的:(‘13145611223’, ‘0b113461e9cd4e59a710f950c7c32c8a’),我们更加方便的获取数据是字典的格式:可以直接让他显示结果为字典格式:
from pymysql import cursors
cursorclass=cursors.DictCursor # 在数据库连接时,设置参数cursorclass为字典游标,fetch返回数据为字典格式


import pymysql
from pymysql import cursors

conn = pymysql.Connect(
    user="XXXX",
    password="XXXX",
    database="XXXX",
    port=3306,
    host="XXXX",
    charset="utf8mb4",  # 支持包含中文在内的各种字符集 语法记住即可
    cursorclass=cursors.DictCursor  # # 在数据库连接时,设置参数cursorclass为字典游标,fetch返回数据为字典格式
)
print(conn)
# 2、游标
cur = conn.cursor()
print(cur)# 游标对象
# 3、执行sql基于游标
sql= 'select id, user_phone ,mobile_code, rec_date from tz_sms_log where user_phone = "18736768203" order by id desc;'
result = cur.execute(sql)
print(result)

# 4、第四步:获取查询结果 -- 保存为元组
# one_data = cur.fetchone()
# print(one_data)
# many_data = cur.fetchmany()
# print(many_data)
all_data = cur.fetchall()
print(all_data)
print(type(all_data))

# 5、第五步: 关闭数据库连接
cur.close()  # 关闭游标
conn.close() # 关闭连接
import pymysql
from pymysql import cursors
from loguru import logger


import pymysql
from pymysql import cursors
from loguru import logger

from day11数据库操作和pytest测试框架.data import shob_db


class Pysql_Hit():

     def __init__(self,user,password,database,port,host):

         # 实例属性 数据库链接
            self.conn = pymysql.Connect(
                user=user,
                password=password,
                database=database,
                port=port,
                host=host,
                charset="utf8mb4",  # 支持包含中文在内的各种字符集 语法记住即可
                cursorclass=cursors.DictCursor  # # 在数据库连接时,设置参数cursorclass为字典游标,fetch返回数据为字典格式
            )
            print(self.conn)
            # 2、游标
            self.cur = self.conn.cursor()
            print(self.cur)# 游标对象

         # 实例方法,查询方法
     def query_sql(self,sql,fetc_num=1,size=None):
        try:
        # 3、执行sql基于游标
            result = self.cur.execute(sql)
            logger.info(f"数据库结果条数{result}")
            print(result)
            # fetc_num = int(input("请输入获取的数据:"))
            if result > 0:
                    if fetc_num == 1:
                        data = self.cur.fetchone()
                        logger.info(f"数据库结果{data}")
                        return data
                    elif fetc_num == 2:
                        data = self.cur.fetchmany(size=size)
                        logger.info(f"数据库结果{data}")
                        return data
                    elif fetc_num >= 3:
                        data = self.cur.fetchall()
                        logger.info(f"数据库结果{data}")
                        return data
            else:
                print("没有数据")
        except Exception as e:
            print("数据错误,{e}")
            logger.error(f"数据库结果{e}")
        finally:
             # 5、第五步: 关闭数据库连接
             self.cur.close()  # 关闭游标
             self.conn.close()  # 关闭连接




if __name__ == '__main__':
    sql= 'select id, user_phone ,mobile_code, rec_date from tz_sms_log where user_phone = "18736768203" order by id desc;'

    # query_sql(sql)
    # print(query_sql(sql))
    # 实例化对象,字典解包

    print(Pysql_Hit(**shob_db).query_sql(sql,fetc_num=3,size=2))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值