gpt4 book ai didi

python - 使用 rpyc 一次连接到数据库并提供多个查询

转载 作者:太空宇宙 更新时间:2023-11-04 06:26:02 29 4
gpt4 key购买 nike

尝试将数据库查询结果提供给临时客户端请求,但不想为每个单独的查询打开连接。我不确定我做的是否正确。

当前的解决方案在“服务器”端是这样的(为清楚起见,已大幅缩减):

import rpyc
from rpyc.utils.server import ThreadedServer
import cx_Oracle

conn = cx_Oracle.conect('whatever connect string')
cursor = conn.cursor()

def get_some_data(barcode):
# do something
return cursor.execute("whatever query",{'barcode':barcode})

class data_service(rpyc.Service):
def exposed_get_some_data(self, brcd):
return get_some_data(brcd)


if __name__ == '__main__':
s = ThreadedServer(data_service, port=12345, auto_register=False)
s.start()

这运行了一段时间。然而,程序有时会崩溃,到目前为止我还无法跟踪它何时崩溃。

我想确认的是,了解如何在 data_service 类之外创建数据库连接。这本身可能会导致问题吗?

非常感谢任何想法。

最佳答案

我认为问题不在于您在类外创建连接,这应该没问题。

我认为问题在于您只创建了一个游标并使用了很长时间,据我所知这不是游标的使用方式。

您可以使用 conn.execute 而无需手动创建游标,这应该适合您使用数据库的方式。如果我没记错的话,这在幕后为每个 SQL 命令创建了一个新游标。您也可以在 get_some_data() 中自己执行此操作:创建一个新游标,使用一次,然后在返回数据之前关闭它。

从长远来看,如果您希望您的服务器更健壮,则需要为数据库操作失败或连接丢失时添加一些错误处理。

最后一点:基本上您已经编写了一个非常基本的数据库代理服务器。可能已经有各种现有的解决方案,它们已经处理了您可能遇到的许多问题。我建议至少考虑使用现有的解决方案。

关于python - 使用 rpyc 一次连接到数据库并提供多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8025765/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com