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