我有以下Python代码将键和值属性存储到键值数据库中。
try:
persistence.set(student_first_name + ".firstname", student_first_name)
persistence.set(student_last_name + ".last", student_last_name)
persistence.set(student_id + ".id", student_id)
persistence.set(student_sex + ".sex", student_sex)
persistence.set(student_year + ".year", student_year)
except ValueError:
exception
是否有更好的设计模式,可以一次又一次地使用不同的参数调用相同的persistence.set()?我也有在应用程序的不同部分中的for循环调用相同的代码。
答案 0 :(得分:2)
如果将每个数据存储在其自己的变量中,则别无选择,只能手动保存每个数据。但是,如果将它们全部存储在一个集合类型(例如dict)中,则可以使用循环对值进行迭代。例如:
student = {
"firstname": "John",
"last": "Smith",
"id": "4815162342",
"sex": "male",
"year": "2000"
}
for key, value in student.items():
persistence.set(value + "." + key, value)
顺便说一句,我通过将对象的值与指示其用途的字符串连接来创建Redis密钥对我来说有点不寻常。对我来说似乎是自欺欺人。除非您知道约翰·史密斯的年份存储在键“ 2000.year”下,否则您将无法检索该年份,但是如果您已经知道,则从数据库中获取该年份是没有意义的。
我不知道什么是惯用的解决方案,但是在密钥前面加上每个学生唯一的值可能是有意义的。该ID可能已足够:
for key, value in student.items():
persistence.set(student["id"]+ "." + key, value)