Уведомления

Группа в Telegram: @pythonsu

#1 Март 2, 2008 23:54:21

$m1t
От:
Зарегистрирован: 2006-12-31
Сообщения: 104
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с выполненим insert'a через MySQLdb: строки не добовляются.

Имею такой код:

import MySQLdb
conn = MySQLdb.connect (host = "localhost",
                           user = "root",
                           passwd = "password",
                           db = "devdb")   
cursor = conn.cursor ()
## skipped
for key in y:
    ## skipped 
    text = str(sortedlist)[1:-1]
    print "TEXT for id = %d" %key, text
    #cursor.execute('INSERT INTO similar_tags (tag_id,ids_text) VALUES (%d,"%s"); '\
    #    %(key,text))
    s ="INSERT INTO similar_tags (tag_id,ids_text)\
    VALUES (%d,'%s'); "\
        %(key,text)
    print "s= ",s
    #cursor.execute(s)
    cursor.execute("""
    INSERT INTO similar_tags (tag_id,ids_text)\
    VALUES (%s,%s);
    """,(key,text) )
    print "Number of rows inserted: %d" % cursor.rowcount

После запуска получаю:
1. В дб строки не добавляются.
2. однако выдача скрипта интересна:
TEXT for id = 7 8L, 6L, 5L, 4L, 3L, 2L, 1L
s= INSERT INTO similar_tags (tag_id,ids_text) VALUES (7,'8L, 6L, 5L, 4L, 3L, 2L, 1L');
Number of rows inserted: 1
TEXT for id = 8 7L, 6L, 5L, 4L, 3L, 2L, 1L
s= INSERT INTO similar_tags (tag_id,ids_text) VALUES (8,'7L, 6L, 5L, 4L, 3L, 2L, 1L');
Number of rows inserted: 1
как видно строка s - корректный SQL запрос. И он корректно обрабатывается из консоли MySQL.
Закомментированный варианты тоже отказываются работать.
Чтение мануала, гугление не пролило свет на проблему =( Хотя понятно тчо там все должно быть просто…



Офлайн

#2 Март 3, 2008 00:19:04

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Проблемы с выполненим insert'a через MySQLdb: строки не добовляются.

conn.commit() ?

When you are finished with a transaction, you should execute either db.commit() or db.rollback(). If your server and tables don't support transactions, commit() will still work, but rollback() will raise an exception. Note carefully that these are methods of the connection and not methods of the cursor, even though c.execute(…) is what started the transaction.

Отредактировано (Март 3, 2008 00:26:02)

Офлайн

#3 Март 3, 2008 10:02:10

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с выполненим insert'a через MySQLdb: строки не добовляются.

Если тип таблицы InnoDB - надо коммит делать полюбому.



Офлайн

#4 Март 3, 2008 16:23:13

$m1t
От:
Зарегистрирован: 2006-12-31
Сообщения: 104
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблемы с выполненим insert'a через MySQLdb: строки не добовляются.

Спасибо большое.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version