希望通过数据库查询设置类中的所有实例变量:

例子:

def populate(self, if):
    #Perform mysql query

    self._name = row['name']
    self._email = row['email']
    ...

最快的方法是什么?或者不推荐这样做(有更好的方法)?

有帮助吗?

解决方案

  • 像这样手动执行它使您的代码最具可读性和可预测性。这样您就可以很容易地准确地知道哪些属性存在以及哪些属性不存在。

  • 您可以使用 setattr 使大量这些自动化。

    一个相当好的方法是定义一个列表 attributes = ['name', 'email'...] 作为类属性然后做

    for name in self.attributes:
        setattr(self, "_" + name, row[name])
    

    您还可以从查询本身获取属性,但这会根据您的查询而改变(特别是如果您使用 SELECT * 或类似的东西)以及您更改数据库的情况。

  • 我注意到这些属性都有前导下划线。如果这纯粹是内部的事情,请考虑使用属性而不是查询结果本身或存储字典是否更适合您的需求。一般来说,属性应该是相当静态的东西。

  • 我听说我们的 sql 比 MySQLdb 更好

其他提示

scroll top