#python #mysql #list-comprehension #f-string
#python #mysql #понимание списка #f-строка
Вопрос:
Я пытаюсь сделать 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')
.
Есть ли способ как-то избавиться от этого '
?
Ответ №1:
Вы могли бы использовать 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)'
Ответ №2:
Вы можете присоединиться к списку с помощью ,
:
print(f"INSERT INTO Table ({', '.join(COLUMN_NAMES_ONE)}) VALUES (%s, %s)")