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

why a conditional_expressions inside an f-string is rendered as a syntax error

我正在尝试根据 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'