Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python类中处理数据库对象的好方法是什么?_Python_Sqlalchemy_Pylons - Fatal编程技术网

在python类中处理数据库对象的好方法是什么?

在python类中处理数据库对象的好方法是什么?,python,sqlalchemy,pylons,Python,Sqlalchemy,Pylons,我应该直接从每个类的方法中访问全局db对象吗?或者从每个方法中,我应该实例化db对象的一个实例吗 我的一个数据库对象根据所访问信息的id而变化,因此它是通过函数connectToDatabase(id)创建的。我应该让它成为一个全局函数,让它返回一个数据库对象并从每个方法实例化它,还是其他什么 谢谢。在这种情况下,就像在许多其他情况下一样,我更喜欢:让您的类(例如在其\uuuu init\uuuu中)接受DB连接作为参数 这使得测试更容易、更干净,允许您根据需要切换策略(例如,如果您发现一次建立

我应该直接从每个类的方法中访问全局db对象吗?或者从每个方法中,我应该实例化db对象的一个实例吗

我的一个数据库对象根据所访问信息的id而变化,因此它是通过函数connectToDatabase(id)创建的。我应该让它成为一个全局函数,让它返回一个数据库对象并从每个方法实例化它,还是其他什么


谢谢。

在这种情况下,就像在许多其他情况下一样,我更喜欢:让您的类(例如在其
\uuuu init\uuuu
中)接受DB连接作为参数

这使得测试更容易、更干净,允许您根据需要切换策略(例如,如果您发现一次建立的数据库连接太多,则切换到“数据库连接池”策略),并更准确、更灵活地分配职责


总的来说,我认为依赖注入可能是最重要的设计模式,但在伟大的“四人帮”一书中没有列出!)

SQLAlchemy建议创建会话的函数是全局函数

sessionmaker()的目的是 函数不能在全局范围内调用 申请范围,以及 返回的类将提供给 应用程序的其余部分作为 用于实例化的单个类 会议