为什么f字符串中的conditional_expressions被呈现为语法错误



我正试图从PySimpleGUI字段中的值编译SQL更新查询。我使用串联的f字符串来完成这一操作。

如果任何字段为空,则必须将"DEFAULT"替换为值。为此,我尝试使用conditional_expressions,例如:

update_cust_qry = "UPDATE `d_base`.`Customers` SET " +
f"Contact = '{'DEFAULT' if values['_CONTACT_'] = '' else values['_CONTACT_']}'," + 
f"WHERE Customer = '{values['_CUSTOMERS_'][0]}'"

不幸的是,Python-3将这样的构造声明为语法错误。

你能告诉我一个正确的方法吗?

非常感谢

梅尔

代码中的一个小错误:在if条件中使用了=而不是==。我用值容器的推断结构尝试了同样的构造,但没有得到语法错误,所以错误在于逻辑,而不是f字符串。

values = {'_CONTACT_': "", '_CUSTOMERS_': [1,2,3]}
str = f"Contact = '{'DEFAULT' if values['_CONTACT_'] == '' else values['_CONTACT_']}'," + 
f"WHERE Customer = '{values['_CUSTOMERS_'][0]}'"
print(str)

输出:

Contact = 'DEFAULT',WHERE Customer = '1' 

现在我尝试使用:values = {'_CONTACT_': "test", '_CUSTOMERS_': [4]}

输出:

Contact = 'test',WHERE Customer = '4'

相关内容

最新更新