Форум сайта python.su
0
Форумчане, я запутался, помогите
Есть бд на локалхосте, вот класс, где коннекчусь
class SQL(): def __init__(self): self.connection = pymysql.connect(host='127.0.0.1', user='root', passwd='1236', db='test') self.cursor = self.connection.cursor() def insert_lessons(self, chatid, mon, tue, wed, thu, fri, sat, sun): query = 'INSERT INTO lessons VALUES ({}, "{}", "{}", "{}", ' \ '"{}", "{}", "{}", "{}")'.format(chatid, mon, tue, wed, thu, fri, sat, sun) self.cursor.execute(query) self.connection.commit() def search_all(self, table): query = 'SELECT * FROM "{}"'.format(table) self.cursor.execute(query) return self.cursor.fetchall()
sql = SQL() print(sql.search_all('lessons')) sql.insert_lesson(from_id, 'mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun')
Офлайн
221
Australicys
используйте подстановку значений,а не лично формируйте строку с запросом. Тем самым убережете себя от атак. Например так:
query = 'INSERT INTO lessons VALUES (%s, %s, %s, %s, %s, %s, %s, %s)' self.cursor.execute(query, (chatid, mon, tue, wed, thu, fri, sat, sun))
Офлайн
221
Если бы не хватало прав - возбудилось бы исключение соответствующее.
Офлайн
857
AustralicysСделай всё без класса.
В чем проблема? Может быть права записи? Направьте плиз
Офлайн
72
Покажи код целиком. В представленных кусках криминала не видно.
Офлайн
0
PooH прав, проблема в другом. Показываю
В определенный момент у меня запускается функция, она скачивает расписание, я все это дело разрезаю и упаковываю в удобный вид. Получаю массив с элементами такого вида
Лекция
Сичинава Д.В.
Теория языка (рус)
502
09:00-10:20
Старая Басманная ул., д. 21/4
~~~~~~~~~~~~~
Лекция
Сичинава Д.В.
Теория языка (рус)
502
10:30-11:50
Старая Басманная ул., д. 21/4
~~~~~~~~~~~~~
Практическое занятие
Сичинава Д.В.
Теория языка (рус)
527
13:40-15:00
Старая Басманная ул., д. 21/4
~~~~~~~~~~~~~
sql.insert_lesson(1233213, '123123', '123213,', '1231234124', '31231232', '1232131', '1231231', '1231231')
sql.insert_lesson(from_id, lessons[0], lessons[1], lessons[2], lessons[3], lessons[4], lessons[5], lessons[6])
Отредактировано Australicys (Янв. 15, 2016 15:07:52)
Офлайн
0
JOHN_16
Спасибо за совет
py.user.next
Все ок без классов, проблема, очевидно в другом. Выше описал
Отредактировано Australicys (Янв. 15, 2016 20:36:34)
Офлайн
221
Australicysдумаю что нет. У вас же явно небольшой объем данных?
Проблема в объеме передаваемых данных?
Офлайн
0
JOHN_16
элемент массива я уже написал выше. Таких 7. То есть строка бд состоит из id и 7ми элементов массива
Офлайн
0
UPD:
Нашел где спотыкается.
Первый insert выполняется, а второй нет. Кодировка? Как поправить?
sql.insert_lesson(from_id, 'sdfwgwe', '123213,', '1231234124', '31231232', '1232131', '1231231', '1231231') sql.insert_lesson(from_id, 'привет', '123213,', '1231234124', '31231232', '1232131', '1231231', '1231231')
class SQL(): def __init__(self): self.connection = pymysql.connect(host='127.0.0.1', user='root', passwd='1236', db='test', charset='utf8', init_command='SET NAMES UTF8') self.cursor = self.connection.cursor()
Отредактировано Australicys (Янв. 16, 2016 04:29:41)
Офлайн