Я хочу создать таблицу с столбцами динамически, используя список 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))
Пожалуйста, помогите по этому поводу. заранее спасибо
У вас есть пробелы в имени столбца. т.е. "Имя" вместо "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)); '