Найти - Пользователи
Полная версия: В MySQL не записываются данные
Начало » Python для новичков » В MySQL не записываются данные
1 2
Moi5es
Вручную создал в БД таблицу с тремя столбцами: 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()
IDLE ошибок не выводит
JOHN_16
после вставки значений забыли вызвать commit
cursor.execute("INSERT INTO table(Name, Alert, Date) VALUES('PC user','1', NOW())")
db.commit()
py.user.next
Moi5es
cursor.execute("SELECT VERSION()")
Прочитай, что отвечает.

JOHN_16
после вставки значений забыли вызвать commit
Там по умолчанию автокоммит. А инструкция COMMIT нужна, когда есть инструкция для начала транзакции.
mysql.com. commit
JOHN_16
py.user.next
Вероятно это из за настроек - на домашнем пк проверил, только после commit запись появляется в таблице. Я сам не силен в MySQL/MariaDB, поэтому вот только сам факт озвучиваю.

Добавлю: хотя в настройках mysqld указано autocommit ON. В общем не знаю в чем дело. Может позже разберусь.
JOHN_16
В SQLite автокоммит присутствует по умолчанию.
Moi5es
JOHN_16
после вставки значений забыли вызвать commit
Пробовал уже, с ним тоже не пишется в базу.
Alen
Версия 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()

рабочий?
Moi5es
Версия python 2.7?
Python 3.4.1
Как проверяете?
Смотрю в БД
рабочий?
Ответ в IDLE
(('5.5.41-log',),) Version MySQL
((1, 'some_value'),)

Логи MySQL
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

Записей в БД всё равно нет
Alen
Moi5es
Ответ в IDLE
(('5.5.41-log',),) Version MySQL
((1, ‘some_value’),)

Moi5es
Записей в БД всё равно нет

А это что?

(1, 'some_value'),
py.user.next
JOHN_16
Вероятно это из за настроек
Moi5es
1 Query set autocommit=0
Вот у него отключается автокоммит. Там можно отключать в настройках.
mysql.com. autocommit

JOHN_16
В SQLite автокоммит присутствует по умолчанию.
SQLite вообще поразила, когда оказалось, что добавление колонки в таблицу есть, а удаления - нет.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB