@ Я перевожу ввод от пользователя в команду MySQL, но он говорит, что у меня неправильный синтаксис, и Idk, как я могу это исправить. По сути, я создал программу на python (не проблема с кодом python), которая способна создавать таблицы MySQL и преобразовывать пользовательский ввод в команду MySQL для создания таблицы, но я думаю, что я неправильно сформулировал команду и мне нужен кто-то, чтобыпомогите объяснить, что я сделал не так и как я могу это исправить или каким-то другим способом (нет новых пакетов python, только другая команда MySQL).
#Error
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 ''c1', 'c2') VALUES [('r1', 'r2')]' at line 1
#here is what i was collecting in my attempt to fix the bug
'''
ROW SYNTAX: [('r1', 'r2')]
COLUMN SYNTAX: ('c1', 'c2')
MySQL COMMAND: CREATE TABLE test ('c1', 'c2') VALUES [('r1', 'r2')]
'''
#just the values none of the ROW SYNTAX or COLUMN SYNTAX is actually put into the mysql command
Я ожидал, что он создаст таблицу с:
2 столбца: c1 и c2
1 строка с 2 значениями: r1 и r2
Тем не менее, как я объяснил выше ... это не так. Я не работаю с MySQL, а просто с Python, поэтому мне, вероятно, не хватает чего-то очень простого или большого, чего я просто не понимаю.
Я видел пример синтаксиса, похожего на этот, но опять же, я нене понимаю.
ОБНОВЛЕНИЕ
'''
ROW SYNTAX: [('r1', 'r3'), ('r2', 'r4')]
COLUMN SYNTAX TCOLN: (c1, c2)
COLUMN SYNTAX COLNAMES: (c1 VCHAR(255), c2 VCHAR(255))
CREATE TABLE COMMAND: CREATE TABLE test (c1 VCHAR(255), c2 VCHAR(255));
INSERT TABLE COMMAND: INSERT INTO test (c1, c2) VALUES [('r1', 'r3'), ('r2', 'r4')];
'''
'''
Traceback (most recent call last):
line 472, in cmd_query
raw_as_string=raw_as_string)
_mysql_connector.MySQLInterfaceError: 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 'VCHAR(255), c2 VCHAR(255))' at line 1
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
line 558, in ctable
cursor.execute(sqlCol) #slqCol is CREATE TABLE test (c1 VCHAR(255), c2 VCHAR(255));
line 266, in execute
raw_as_string=self._raw_as_string)
line 475, in cmd_query
sqlstate=exc.sqlstate)
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 'VCHAR(255), c2 VCHAR(255))' at line 1
'''
Благодаря вашим предложениям я сейчас использую VARCHAR, но мне все еще кажется, что я столкнулся с той же проблемой
Благодаря@Martin для объяснения, что такое varchar, также оказалось, что VCHAR - это не то же самое, что VARCHAR (спасибо @robsiemb). Теперь таблица создает, НО не помещает значения данных в? (это может быть проблема с Python, надеюсь, нет)
'''
INSERT TABLE COMMAND: INSERT INTO test (c1, c2) VALUES ('r1', 'r2'),('rr1', 'rr2');
'''
# LATEST UPDATE
New Error when inserting values
```python
#CREATE TABLE COMMAND: CREATE TABLE test (c1 VARCHAR(255), c2 VARCHAR(255));
#INSERT TABLE COMMAND: INSERT INTO test (c1, c2) VALUES (r1,r3),(r2,r4);
'''
Traceback (most recent call last):
line 472, in cmd_query
raw_as_string=raw_as_string)
_mysql_connector.MySQLInterfaceError: Unknown column 'r1' in 'field list'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
line 563, in ctable
cursor.execute(sqlVal)
line 266, in execute
raw_as_string=self._raw_as_string)
line 475, in cmd_query
sqlstate=exc.sqlstate)
mysql.connector.errors.ProgrammingError: 1054 (42S22): Unknown column 'r1' in 'field list'
'''
Проблема с Python, спасибо за ответ на мой вопрос!