LINUX.ORG.RU

Не работает запрос на добавление (Insert) из Pyithon 3 в БД MySql

 , ,


0

1

Ошибок не выдает, при окончании скрипта (Будто все нормально), но запись не добавляется. Сам запрос

INSERT INTO `log` (`url`) VALUES ('" + url + "')
работает в PhpMyAdmin и запись добавляется. Долго искал... но не нашел.
import MySQLdb
db = MySQLdb.connect(host="localhost",user="root", passwd="******", db="db_as78", use_unicode=True, charset="utf8")
cur = db.cursor()
url = "asdfasdfsdf"
quest_log="INSERT INTO `log` (`url`) VALUES ('" + url + "')"
db.commit()
cur.execute(quest_log)
db.close()
Прошу помощи товарищи

db.commit()
cur.execute(quest_log)

поменяй местами две строчки

пользуясь случаем, поздравляю всех студентов, преподавателей и военных комиссаров с началом сессии

MyTrooName ★★★★★
()
Ответ на: комментарий от pawnhearts

Не помогает...

"INSERT INTO `log` (`url`) VALUES ('" + url +"')"

Заметил странную вещь, при выполнении скрипта запись не добавляется, но счетчик id увеличивается, а при выполнении запроса через PhpMyAdmin добавляется уже с увеличенным id... Вот так Вот...

Dimon07
() автор топика

db = MySQLdb.connect(autocommit=true

И используйте mysqlclient

ism ★★★
()

перед тем, как что-то выяснять, было бы неплохо избавиться от этого сомнительного собирания запроса руками и писать

cur.execute("INSERT INTO `log` (`url`) VALUES (%s)", url)
Novel ★★★★
()

но запись не добавляется

перепроверь

добавь в тот же скрипт после записи чтение

anonymous
()

и загугли sql-injection

anonymous
()
import MySQLdb


conn = MySQLdb.connect()

with conn.cursor() as cursor:
    cursor.execute(query)
    conn.commit()
    
conn.close()
vvn_black ★★★★★
()
Ответ на: комментарий от crutch_master
Найдено 2 ошибок при анализе.

    Неожиданный токен. (near "»" at position 48)
    Неожиданное начало выражения. (near "»" at position 48)

SQL запрос:

INSERT INTO `log` (`url`) VALUES ('" + url + «')» 
Dimon07
() автор топика
Ответ на: комментарий от Novel

А с этим что то можно сделать?

 
Traceback (most recent call last):
  File "/home/user/Python_script/bot_@isinka/testMySQLdb.py", line 6, in <module>
    cursor.execute("INSERT INTO `log` (`url`) VALUES (%s)", "asdasd")
  File "/home/user/.local/lib/python3.5/site-packages/MySQLdb/cursors.py", line 240, in execute
    self.errorhandler(self, ProgrammingError, str(m))
  File "/home/user/.local/lib/python3.5/site-packages/MySQLdb/connections.py", line 52, in defaulterrorhandler
    raise errorclass(errorvalue)
_mysql_exceptions.ProgrammingError: not all arguments converted during string formatting
[Finished in 0.2s with exit code 1]
Dimon07
() автор топика
Ответ на: комментарий от Novel

Переделал вот так

import MySQLdb

conn = MySQLdb.connect(host="localhost",user="root", passwd="********", db="iSinka", use_unicode=True, charset="utf8")

with conn.cursor() as cursor:
	url="addfadasd"
	cursor.execute("INSERT INTO `log` (`url`) VALUES (%s)",[url])
	conn.commit()

conn.close()

как рекомендовали... все заработало СПАСИБО всем Товарищи... Надеюсь это кому то еще поможет. У меня %s с квадратными скобками заработал только... )))

Dimon07
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.