python-3.x 可重构数据库查询

xvw2m8pv  于 2023-02-14  发布在  Python
关注(0)|答案(1)|浏览(102)

假设我有category="foo"和一个NoSQL query={"category"=category},每当我重构变量名category时,如果我想采用它,我需要在查询中手动更改它。
在Python 3.8+中,我可以通过变量本身获得字符串形式的变量名。
现在我可以使用query={f"{category=}".split("=")[0]=category},重构也会改变查询,这适用于任何数据库查询或语句(SQL等)。
这会是一个糟糕的实践吗?不仅仅是关于Python,而是任何可能的语言。

vyswwuz2

vyswwuz21#

这是不是一种不好的做法?
是的,局部变量的名称不需要与数据存储中的字段相关联。
你应该能够用任何python变量来检索一条记录并过滤它的字段,不管它的名字是什么,也不管它是否嵌套在一个更大的数据结构中。
在伪代码中:

connection = datastore.connect(...)

# passing a string directly
connection.fetch({"category": "fruit"})

# passing a string variable
category_to_fetch = "vegetable"
connection.fetch({"category": category_to_fetch})

# something more exotic like a previous list of records
r = [("fish",)]
connection.fetch({"category": r[0][0]})

# or even a premade filter dictionary
filter = {"category": "meat"}
connection.fetch(filter)

相关问题