问题描述
我正在尝试使用列表理解功能来制作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')
。
是否有办法以某种方式摆脱该'
?
解决方法
您可以改用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)'
,
您可以通过,
加入该列表:
print(f"INSERT INTO Table ({',%s)")