Форум сайта python.su
0
Вручную создал в БД таблицу с тремя столбцами: Name, Alert, Date. Пытаюсь записать в них данные, но ничего не происходит
import MySQLdb path = r'C:\config.cnf' db = MySQLdb.connect(read_default_file=path) cursor = db.cursor() cursor.execute("SELECT VERSION()") cursor.execute("INSERT INTO table1(Name, Alert, Date) VALUES('PC user','1', NOW())") db.close()
Отредактировано Moi5es (Март 11, 2015 12:32:01)
Офлайн
221
после вставки значений забыли вызвать commit
cursor.execute("INSERT INTO table(Name, Alert, Date) VALUES('PC user','1', NOW())") db.commit()
Офлайн
857
Moi5esПрочитай, что отвечает.cursor.execute("SELECT VERSION()")
JOHN_16Там по умолчанию автокоммит. А инструкция COMMIT нужна, когда есть инструкция для начала транзакции.
после вставки значений забыли вызвать commit
Отредактировано py.user.next (Март 11, 2015 12:48:17)
Офлайн
221
py.user.next
Вероятно это из за настроек - на домашнем пк проверил, только после commit запись появляется в таблице. Я сам не силен в MySQL/MariaDB, поэтому вот только сам факт озвучиваю.
Добавлю: хотя в настройках mysqld указано autocommit ON. В общем не знаю в чем дело. Может позже разберусь.
Отредактировано JOHN_16 (Март 11, 2015 13:50:11)
Офлайн
221
В SQLite автокоммит присутствует по умолчанию.
Офлайн
0
JOHN_16Пробовал уже, с ним тоже не пишется в базу.
после вставки значений забыли вызвать commit
Офлайн
49
Версия python 2.7?
Moi5es
Пытаюсь записать в них данные, но ничего не происходит
import MySQLdb path = r'C:\config.cnf' db = MySQLdb.connect(read_default_file=path) cursor = db.cursor() cursor.execute("SELECT VERSION()") print('{} Version MySQL'.format(cursor.fetchall())) cursor.execute('CREATE TEMPORARY TABLE test.mysupertest(id INT(11), val VARCHAR(255))') cursor.execute("INSERT INTO test.mysupertest(id, val) VALUES(1, 'some_value')") cursor.execute('SELECT * FROM test.mysupertest') print(cursor.fetchall()) cursor.execute('DROP TABLE IF EXISTS test.mysupertest') db.close()
Офлайн
0
Версия python 2.7?Python 3.4.1
Как проверяете?Смотрю в БД
рабочий?Ответ в IDLE
(('5.5.41-log',),) Version MySQL
((1, 'some_value'),)c:\openserver\modules\database\MySQL-5.5\bin\mysqld.exe, Version: 5.5.41-log (MySQL Community Server (GPL)). started with: TCP Port: 3306, Named Pipe: (null) Time Id Command Argument 150311 16:07:56 1 Connect root@localhost on 1 Query set autocommit=0 1 Query SELECT VERSION() 1 Query CREATE TEMPORARY TABLE test.mysupertest(id INT(11), val VARCHAR(255)) 1 Query INSERT INTO test.mysupertest(id, val) VALUES(1, 'some_value') 1 Query SELECT * FROM test.mysupertest 1 Query DROP TABLE IF EXISTS test.mysupertest 1 Quit
Отредактировано Moi5es (Март 11, 2015 15:13:15)
Офлайн
49
Moi5es
Ответ в IDLE
(('5.5.41-log',),) Version MySQL
((1, ‘some_value’),)
Moi5es
Записей в БД всё равно нет
(1, 'some_value'),
Отредактировано Alen (Март 11, 2015 15:20:36)
Офлайн
857
JOHN_16
Вероятно это из за настроек
Moi5esВот у него отключается автокоммит. Там можно отключать в настройках.1 Query set autocommit=0
JOHN_16SQLite вообще поразила, когда оказалось, что добавление колонки в таблицу есть, а удаления - нет.
В SQLite автокоммит присутствует по умолчанию.
Отредактировано py.user.next (Март 11, 2015 23:33:53)
Офлайн