<p><strong>编辑2</strong></p>
<p>受<a href="https://stackoverflow.com/a/61527370/5472354">Ramon Moraes</a>答案的启发,我提出了另一个解决方案,这可能是一个很好的折衷方案:</p>
<pre><code>def updateHasura(description, url, user_id):
args = f'description: "{description}", url: "{url}", user_id: "{user_id}"'
query = """
mutation {
insert_post(objects: args) {
affected_rows
}
}
""".replace('args', args)
print(query)
updateHasura('test', 'test', '1')
</code></pre>
<p><strong>原始答案</strong></p>
<p>要消除双引号,只需在f字符串中添加引号,如下所示:</p>
<pre><code>def updateHasura(description, url, user_id):
query = f"""
mutation {{
insert_post(objects: {{description: "{description}", url: "{url}", user_id: "{user_id}"}}) {{
affected_rows
}}
}}
"""
print(query)
updateHasura('test', 'test', '1')
</code></pre>
<p>我不知道如何摆脱嵌套的花括号,但只要您使用的是格式化字符串</p>
<p><strong>编辑</strong></p>
<p>如果你<em>真的</em>不想有嵌套的花括号,我想你可以这样做,但我不推荐:</p>
<pre><code> query = """
mutation {
insert_post(objects: {description: "{""" + description + """}", url: "{""" + url + """}", user_id: "{""" + user_id + """}"}) {
affected_rows
}
}
"""
</code></pre>
<p>或</p>
<pre><code> query = """
mutation {
insert_post(objects: {description: "%s", url: "%s", user_id: "%s"}) {
affected_rows
}
}
""" % (description, url, user_id)
</code></pre>