Распаковка понятного списка без » ‘» в f строках

#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)")