混合占位符、executemany 和 table 名称
mixing placeholders, executemany, and table names
我可以使用以下代码遍历 python 对象,但是我希望能够为模式和 table 名称使用占位符,通常我使用 {}.{}
广告 .format()
方法,但如何将两者结合起来?
cur.executemany("INSERT INTO schema.table_name (x,y,z) "
"values (%s, %s, %s)", top_sample)
我不确定是什么问题。您可以像这样使用 format
:
cur.executemany("INSERT INTO {}.{} (x,y,z) values (%s, %s, %s)".format('hello', 'world'), top_sample)
cur.executemany(
"""INSERT INTO schema.{table_name} (x,y,z) values (%s, %s, %s)""".format(table_name=your_table_name),
top_sample
)
用你的 table 名字代替 your_table_name
取决于你使用的python你可以尝试使用f-string
schema = "schema"
table_name = "table_name"
cur.executemany(f"INSERT INTO {schema}.{table_name} (x,y,z) values (%s, %s, %s)", top_sample)
检查 PEP 498 -- Literal String Interpolation
另一个选项很简单format
cur.executemany("INSERT INTO {schema}.{table_name} (x,y,z) values (%s, %s, %s)".format(schema=schema, table_name=table_name), top_sample)
但我发现第一个选项更短更清晰
我可以使用以下代码遍历 python 对象,但是我希望能够为模式和 table 名称使用占位符,通常我使用 {}.{}
广告 .format()
方法,但如何将两者结合起来?
cur.executemany("INSERT INTO schema.table_name (x,y,z) "
"values (%s, %s, %s)", top_sample)
我不确定是什么问题。您可以像这样使用 format
:
cur.executemany("INSERT INTO {}.{} (x,y,z) values (%s, %s, %s)".format('hello', 'world'), top_sample)
cur.executemany(
"""INSERT INTO schema.{table_name} (x,y,z) values (%s, %s, %s)""".format(table_name=your_table_name),
top_sample
)
用你的 table 名字代替 your_table_name
取决于你使用的python你可以尝试使用f-string
schema = "schema"
table_name = "table_name"
cur.executemany(f"INSERT INTO {schema}.{table_name} (x,y,z) values (%s, %s, %s)", top_sample)
检查 PEP 498 -- Literal String Interpolation
另一个选项很简单format
cur.executemany("INSERT INTO {schema}.{table_name} (x,y,z) values (%s, %s, %s)".format(schema=schema, table_name=table_name), top_sample)
但我发现第一个选项更短更清晰