f字符串中未包含“'”的已解压缩列表的解压缩

时间:2020-10-13 02:54:46

标签: python mysql list-comprehension f-string

我正在尝试使用列表理解功能来制作sql query。首先,我采用这样的列名称

COLUMNS_ONE = ["id INT(6)", "firstname VARCHAR(30)"]
COLUMN_NAMES_ONE = [name.split(" ")[0] for name in COLUMNS_ONE]
print(COLUMN_NAMES_ONE)

>>> ["id", "firstname"]

接下来,我要像这样为sql query制作一个mysql变量

f"INSERT INTO {TABLE_NAMES[0]} ({*COLUMN_NAMES_ONE,}) VALUES (%s, %s)"

会抛出

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '('id', 'firstname')) VALUES (6, 'Marcel')' at line 1

说插入的query不是(id, firstname),而是('id', 'firstname')。 是否有办法以某种方式摆脱该'

2 个答案:

答案 0 :(得分:3)

您可以改用join()

COLUMNS_ONE = ["id INT(6)", "firstname VARCHAR(30)"]
COLUMN_NAMES_ONE = [name.split(" ")[0] for name in COLUMNS_ONE]

f"INSERT INTO Table ({', '.join(COLUMN_NAMES_ONE)}) VALUES (%s, %s)"

# 'INSERT INTO Table (id, firstname) VALUES (%s, %s)'

答案 1 :(得分:1)

您可以通过, 加入该列表:

print(f"INSERT INTO Table ({', '.join(COLUMN_NAMES_ONE)}) VALUES (%s, %s)")