加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

PostgreSQL Python:关闭连接

发布时间:2020-12-13 18:05:41 所属栏目:百科 来源:网络整理
导读:我用 Python制作了一个游戏服务器,它使用psycopg2连接到PostgreSQL数据库.我见过一些例子,我已经看到,当创建与数据库的连接时,应该在完成查询时关闭连接,例如对于每个客户端: #create connection to dbcon = psycopg2.connect (database = 'testdb',user =
我用 Python制作了一个游戏服务器,它使用psycopg2连接到PostgreSQL数据库.我见过一些例子,我已经看到,当创建与数据库的连接时,应该在完成查询时关闭连接,例如对于每个客户端:
#create connection to db
con = psycopg2.connect (database = 'testdb',user = 'janbodnar')
cur = con.cursor ()
#process query
.
.
.
#close connection
con.close ()

好的,当我启动我的服务器时,我有这个:

在我的课堂里

def __init __ (self):
 #create connection to db
 con = psycopg2.connect (database = 'testdb',user = 'janbodnar')
 cur = con.cursor ()

# to all customers ...
def query(self):
#process query,for example ...
cur.execute ("DROP TABLE IF EXISTS Cars")
#the connection never closes

也就是说,我对所有客户的所有查询使用相同的连接对象,并且从不关闭连接,这看起来比打开和关闭每个客户端的连接更好,我的服务器显然运行良好.你想到这个吗?
这样做得好吗?不要做?
谢谢

这可能有效但不好.问题:如何为会话设置日期时间格式?如何处理交易?临时表?如何处理错误?另见: How can I pool connections using psycopg and gevent?

对于这样的事情,您可以使用连接池.这样,当您从新客户端(新网络连接)开始时,您将从池中获得数据库连接.使用它而不是关闭连接后,释放它并返回池.现在它可能被其他线程使用.

如果您的连接以某种方式被破坏,它可能是简单的关闭而不是返回池.每个线程都可以使用事务,您可以更改日期时间格式等会话设置.

我看到有http://initd.org/psycopg/docs/pool.html

PS在你的方法中你应该使用self.con和self.cur.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读