Дообр день, уважаемые знатоки! Я использую mysqlConnector и python 3.6.5
В python у меня есть лист:
zipped = [('akamaitechnologies.com', 8221, 0), ('akamaitechnologies.com', 2053, 0), ('googleusercontent.com', 1119, 0), ('1e100.net', 3999, 0), ('1e100.net', 2819, 0)]`
Также у меня есть простая таблица для записи информации:
CREATE TABLE `dns` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`dnsname` text,
`inbytes` int(11) DEFAULT NULL,
`outbytes` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
И мой великолепный код:
#one function for connect & execute query
def mysql_conn2(fhost, finb, foutb):
cnx = mysql.connector.connect(user=mysql_user, password=mysql_password, database=mysql_database, host=mysql_host)
cursor = cnx.cursor()
cursor.execute("INSERT into dns (`dnsname`,`inbytes`,`outbytes`) VALUES(%s,%s,%s);", (fhost, finb, foutb))
cnx.close()
#my script, that i have ro run
for item in zipped:
host = str(item[0])
inb = str(item[1])
outb = str(item[2])
print(host,inb, outb)
mysql_conn2(host,inb,outb)
Когда я проверяю записи в таблице, то там совершенно пусто! (при этом, если добавить руками - всё ОК).
Я задебажил скрипт - и увидел это:
Ошибка - экранированные строки в cursor.statement property, но почему?
Потом добавил руками запись в таблицу - и, о чудо, значение AUTO_INCREMENT-поля выдало отличное от 1-числа!
Как можно заэкранировать строки или может быть я делаю что-то не так?
Спасибо за помощь!
Спасибо всем, разобрался с автокоммитами!
Смотрим документацию:
https://mariadb.com/resources/blog/how-connect-python-programs-mariadb
Добавляем:
cnx.commit()
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости