2012-01-20 2 views
3

Я создал таблицу «table2» и получил предупреждения (таблица уже существует) при запуске моего кода. Я хочу создать таблицу только в том случае, если она не существует. Некоторые исследования MySQL syntax website появляется следующее MySQL: CREATE TABLE IF NOT EXISTSCREATE TABLE ЕСЛИ НЕ СУЩЕСТВУЕТ работать в MySQLdb? Синтаксис?

Мой код:

cursor.execute('CREATE TABLE IF NOT EXISTS (2 INT)`table2`') 

обеспечивает это предупреждение:

_mysql_exceptions.ProgrammingError: (1064, "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 '(2 INT)`table2`' at line 1") 

У меня есть базы данных версии версия базы данных: 5.1. 54-1ubuntu4 Thanks-Tom

+1

Вы действительно хотели создать столбец с именем «2»? –

ответ

4

Есть пара проблем с синтаксисом вашего CREATE TABLE команда.

  1. У вас есть имя таблицы после определения столбцов. Он должен находиться перед ними, как это:

    CREATE TABLE IF NOT EXISTS table2 (<column definitions>);

  2. Во-вторых, вы используете 2 в качестве имени столбца, но я не уверен, что 2 даже допустимое имя столбца. Если это так, следует указать, чтобы отличить его от простого целого.

Вы можете прочитать больше о синтаксисе CREATE TABLE в MySQL documentation.

1

Во-первых, используйте the official reference, а не какой-либо случайный сайт. Документы почти наверняка будут намного лучше. Во-вторых, вы, вероятно, имели в виду нечто большее:

CREATE TABLE IF NOT EXISTS table2 (columnname INT); 
1

Проблема заключается в синтаксисе sql. правильный синтаксис для оператора CREATE TABLE помещает имя таблицы перед столбцами. Кроме того, 2 INT не является допустимым определением столбцов. Если вы имеете в виду для столбца, чтобы иметь имя «2» должно быть заключено в кавычки, как

`2` INT 

Или, если (что более вероятно) вы хотите столбец из двух десятичных цифр, то длина помещается после типа данных; колонна должна еще быть дано имя: foo_column int(2)

Так в целом, вы хотите

cursor.execute(''' 
    CREATE TABLE IF NOT EXISTS table2 (
     foo_column INT(2)) 
    ''') 
3

синтаксис MySQL является

CREATE TABLE [IF NOT EXISTS] tbl_name 
    (create_definition,...) 
    [table_options] 
    [partition_options] 

, используя следующую ...

cursor.execute('CREATE TABLE IF NOT EXISTS `table2` (`something` int(2))') 

результат :

__main__:1: Warning: Table 'table2' already exists 
+1

Благодарим вас за помощь! Как я могу убить предупреждение? – Tom

+4

do 'import warnings', а затем' warnings.filterwarnings ('ignore') ' – Landon