динамическое создание таблиц и столбцов с использованием MySQL Python Connector

0

Я хочу создать таблицу с столбцами динамически, используя список python. Имена столбцов находятся в списке, и я хочу ссылаться на них в запросе MySQL. Я использую MySQL.connector с python 3.4.3.

Ниже приведен код, который я пробовал:

col names:  ['Last Name', 'First Name', 'Job', 'Country']
table_name = 'stud_data'
query = "CREATE TABLE IF NOT EXISTS"+table_name+"("+"VARCHAR(250),".join
(col) + "Varchar(250))"
print("Query is:" ,query)
cursor.execute(query)
conn.commit()

Но я получаю следующую ошибку:

mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Name VARCHAR(250),First Name VARCHAR(250),Job VARCHAR(250),Country VARCHAR(250))' at line 1

Запрос выглядит так:

Query is: CREATE TABLE IF NOT EXISTS stud_data (Last Name VARCHAR(250),First Name VARCHAR(250),Job VARCHAR(250),Country VARCHAR(250))

Пожалуйста, помогите по этому поводу. заранее спасибо

Теги:
mysql-workbench
mysql-python

1 ответ

1
Лучший ответ

У вас есть пробелы в имени столбца. т.е. "Имя" вместо "FirstName", удаление пробелов решит вашу проблему. Если вы хотите сохранить пробелы, используйте обратные метки '' ', чтобы обернуть строку

Образец кода:

columns = [ ('Last Name', 'First Name', 'Job', 'Country') ] #list of tuples

for p in columns:
    q = """ CREATE TABLE IF NOT EXISTS stud_data ('{col1}' VARCHAR(250),'{col2}' VARCHAR(250),'{col3}' VARCHAR(250),'{col4}' VARCHAR(250)); """
    sql_command = q.format(col1=p[0], col2=p[1], col3=p[2], col4 = p[3])


>>> sql_command
' CREATE TABLE IF NOT EXISTS stud_data ('Last Name' VARCHAR(250),'First Name' VARCHAR(250),'Job' VARCHAR(250),'Country' VARCHAR(250)); '
  • 0
    Большое спасибо. Это сработало, как и ожидалось. Ура !!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню