使用数据库查询中的行填充类属性的最有效方法是什么?
题
希望通过数据库查询设置类中的所有实例变量:
例子:
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 更好
其他提示
看 SQLAlchemy的这对蟒蛇最流行的数据库抽象。结果 如果你真的很喜欢这个活动记录模式有一个层,你可以把它称为灵药顶>
我使用SQLAlchemy,因为它是一个不错的数据库抽象,让我转出数据库。我在内存使用SQLite对我的测试,我可以使用SQLAlchemy的楔到我的代码。
不隶属于 StackOverflow