2014-11-18 1 views
1

Я написал небольшой скрипт для создания базы данных MySQL, создания таблицы (ранее ее стереть, если она уже существует) и вставить много записей. Когда я исполню мой сценарий, он работает создание базы данных и таблицы, но не писать запись в таблицу:Python MySQLdb: создание базы данных и таблица заполнения

from warnings import filterwarnings 
import MySQLdb as db 


filterwarnings('ignore', category = db.Warning) 
try: 
    db_name = 'chom' 
    con = db.connect(user='user', passwd='pass') 
    cur = con.cursor() 

    # Create new database 
    cur.execute('CREATE DATABASE IF NOT EXISTS ' + db_name + ';') 

    # Create PARAMETERS table 
    cur.execute('DROP TABLE IF EXISTS ' + db_name + '.PARAMETERS;') 
    query = ('CREATE TABLE ' + db_name + '.PARAMETERS (' 
     'idPARAMETERS INT(10) NOT NULL AUTO_INCREMENT, ' 
     'Param_name VARCHAR(30) NULL DEFAULT NULL, ' 
     'Param_value VARCHAR(255) NULL DEFAULT NULL, ' 
     'Timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ' 
     'ON UPDATE CURRENT_TIMESTAMP, ' 
     'User_id VARCHAR(20) NULL DEFAULT NULL, ' 
     'PRIMARY KEY (idPARAMETERS));' 
    ) 
    cur.execute(query) 

    # Insert entries 
    parameters = ['param1', 'param2', 'param3', 
     'param4'] 

    for i, param_name in enumerate(parameters, start=1): 
     cur.execute('INSERT INTO ' + db_name + '.PARAMETERS ' 
      '(idPARAMETERS, Param_name, Param_value, User_id) ' 
      'VALUES (' + str(i) + ', %s, %s, %s);', 
      (param_name, '', '[email protected]')) 

    cur.close() 
    con.commit() 
except Exception, e: 
    print 'Error. Last query: ' + str(cur._last_executed) 
    print e 
print 'DB installation script finished' 

Я не могу видеть, где проблема. Есть идеи?

+0

В любом случае, я выполнил сценарий, который вы опубликовали, - он работает для меня, и я вижу, что записи вставляются в таблицу «PARAMETERS». Вы уверены, что проверяете ту же базу данных и таблицу, в которую вы вставляете? – alecxe

+0

@alecxe Вы правы: это действительно работает. Я не должен полагаться на программное обеспечение mysql-workbench. Пожалуйста, ответьте, говоря, что mysql-workbench - это часть дерьма, и я приму свой ответ за помощь yoru. –

+0

ha, я использую MySQL Workbench в Linux, запускаю ваш скрипт, и все работает штрафами. Интересно, как воспроизвести ваш случай – ZZY

ответ

0

Код работал правильно, это была ошибка mysql-workbench, которая не показывала правильный контент базы данных (в то время как клиент консоли mysql).

Смежные вопросы