Python 链接数据库操作

        在写python接口自动化测试脚本时,需要连接数据库去验证数据。这个时候需要python链接数据库去编写sql语句去查验数据。那么python链接数据库的脚本文件如何编写呢?

import psycopg2


# python链接数据库操作:
# 1.建立连接获得 connect 对象
# 2.获得游标对象,一个游标对象可以对数据库进行执行操作,非线程安全,多个应用会在同一个连接种创建多个光标;
# 3.书写sql语句
# 4.调用execute()方法执行sql
# 5.抓取数据(可选操作)
# 6.提交事物
# 7.关闭连接
# -*- coding: utf-8 -*-


class PostGreHelper(object):
    def __init__(self, database="python", user="xxx", password="xxxxxxx", host="xxxx", port="*******"):
        self._cursor = None
        self._conn = None
        self._database = database
        self._user = user
        self._password = password
        self._host = host
        self._port = port
        self._result = None

    def get_connection(self):
        self._conn = psycopg2.connect(database=self._database, user=self._user, password=self._password,
                                      host=self._host, port=self._port)

    # 关闭数据库连接
    def close_connection(self):
        # 事务提交
        self._conn.commit()
        # 关闭数据库连接
        self._cursor.close()
        self._conn.close()

    # 执行一条sql  带参数
    def execute_sql_params(self, sql, params):
        self._cursor = self._conn.cursor()
        try:
            print(f"当前执行sql:{sql},参数:{params}")
            # 执行语句
            self._cursor.execute(sql, params)
        except psycopg2.Error as e:
            print(f"执行sql:{sql},出错,错误原因:{e}")

    # 通用执行方法
    def execute_method(self, sql, params=None, method_name=None):
        # 获取连接
        self.get_connection()
        # 执行sql
        self.execute_sql_params(sql, params)
        if method_name is not None:
            # 查询单条
            if "find_one" == method_name:
                self._result = self._cursor.fetchone()
            # 查询全部
            elif "find_all" == method_name:
                self._result = self._cursor.fetchall()
        # 关闭数据库连接
        self.close_connection()

    # 查询单条
    def find_one(self, sql, params=None):
        self.execute_method(sql, params=params, method_name="find_one")
        return self._result

    # 查询所有
    def find_all(self, sql, params=None):
        self.execute_method(sql, params=params, method_name="find_all")
        return self._result

    # 插入
    def insert(self, sql, params=None):
        self.execute_method(sql, params=params)

    # 更新
    def update(self, sql, params=None):
        self.execute_method(sql, params=params)

    # 删除
    def delete(self, sql, params=None):
        self.execute_method(sql, params=params)
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深蓝2019

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值