sql—处理游标的正确方法[sqlite/python]?

ldioqlga  于 2021-07-29  发布在  Java
关注(0)|答案(2)|浏览(318)

我对如何在课堂上使用/传递游标有疑问。我正在做一个小项目,在那里我将有两个班。我不希望这些类的每个对象都能访问数据库。我应该做什么选择?
方案1

class Connector:
    def __init__(self):
        self.conn = sqlite3.connect(db_path)
        self.cursor = self.conn.cursor()

class SpamClassA(Connector):
    <body class>

class SpamClassB(Connector):
    <body class>

方案2

class Connector:
    def __init__(self):
        self.conn = sqlite3.connect(db_path)
        self.cursor = self.conn.cursor()

class SpamClassA:
    def __init__(self, conn):
        self.conn = conn

class SpamClassB:
    def __init__(self, conn):
        self.conn = conn

提前谢谢

mrfwxfqh

mrfwxfqh1#

我会考虑创建一个单例类(因为它与所使用的数据库相同)。您将只有一个连接,该连接将在示例被删除时关闭。它将适用于选项1。

class Connection:
    _conn = None

    def __init__(self, db_path):
        if self._conn is None:
            self._conn = sqlite3.connect(db_path)
        self.cursor = self._conn.cursor()

    def __del__(self):
        if self._conn is not None:
            self._conn.close()
            self._conn = None
6yjfywim

6yjfywim2#

选择1:我觉得它最简洁,处理起来也会花更少的时间。选择2是一种老掉牙的做事方式。

相关问题