上下文经理与psycopg2连接到邮政

发布于 2025-02-07 13:53:22 字数 473 浏览 0 评论 0原文

使用这样的上下文管理器语句进行连接很有用:

with psycopg2.connect(**dns) as conn:
    with conn.cursor(cursor_factory=psycopg2.extras.RealDictCursor) as curs:
...

我应该如何定义一个类别使用上下文管理器与数据库合作的类?

class DBConn:
    def __init__(self, dns):
        self.conn = psycopg2.connect(**dns)
        self.curs = self.conn.cursor()

    def __enter__(self):
        pass

    def __exit__(self):
        pass

It is useful to connect using a context manager statements like this:

with psycopg2.connect(**dns) as conn:
    with conn.cursor(cursor_factory=psycopg2.extras.RealDictCursor) as curs:
...

How should I define a class to work with database using context managers?

class DBConn:
    def __init__(self, dns):
        self.conn = psycopg2.connect(**dns)
        self.curs = self.conn.cursor()

    def __enter__(self):
        pass

    def __exit__(self):
        pass

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

与之呼应 2025-02-14 13:53:22

知道了...

class DBConn:
    def __init__(self, dns):
        self.connection = psycopg2.connect(**dns)

    def __enter__(self):
        return self.connection.cursor()

    def __exit__(self, exc_type, exc_value, traceback):
        self.connection.commit()
        self.connection.close()

got it...

class DBConn:
    def __init__(self, dns):
        self.connection = psycopg2.connect(**dns)

    def __enter__(self):
        return self.connection.cursor()

    def __exit__(self, exc_type, exc_value, traceback):
        self.connection.commit()
        self.connection.close()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文