Форум сайта python.su
Всем добра, уважаемые!
Делаю простую программу, которая будет принимать текст, записывать в базу MySQL, а затем считывать и выводить на печать.
Проблема нашлась там где я не ждал.
При чтении из базы и только (если вывести, например, строковую переменную только что созданную, то проблемы не будет), так вот, при чтении из базы и выводе этого текста в поле Text вот таким вот образом:
Чтение из базы:
sql="SELECT `somefield` FROM `somebase` WHERE `nom` = '"+nom+"';" cursor.execute(sql) answer = cursor.fetchall() KakoyToTextIzBazy = str(answer)[13:len(str(answer))-3]
Pole = Text(root,width=50,height=10,wrap=WORD) Pole.pack() Pole.insert(0.0,KakoyToTextIzBazy)
KakoyToTextIzBazy = 'Какие то цифры\nКакие то буквы\n'
Отредактировано m1r42 (Июль 26, 2022 10:06:23)
Офлайн
print(type(answer), answer)
Офлайн
Все решилось банально, попробовал заменять символы перебором \,n и в итоге каким-то чудом нащупал, что у меня два бэкслэша перед “n”
KakoyToTextIzBazy = KakoyToTextIzBazy.replace("\\n","\n")
Офлайн
чото за экранирование символов слышали?
Офлайн
нет, потому и здесь
Офлайн
m1r42а должны быть где-то тут
нет, потому и здесь
Офлайн
Это я уже понял. Не могу понять в какой момент добавляется этот бэкслэш. Или он вообще не добавляется, а я просто меняю \n на \n в этом коде:
KakoyToTextIzBazy = KakoyToTextIzBazy.replace("\\n","\n")
Отредактировано m1r42 (Июль 26, 2022 11:39:13)
Офлайн
cursor.fetchall() fetches all the rows of a query result. It returns all the rows as a list of tuples. An empty list is returned if there is no record to fetch.
https://pyneng.readthedocs.io/ru/latest/book/25_db/sqlite3_fetch.html
Осознайте какой тип и в каком виде вам курсор возвращает значение
иначе будете на этом холме тупить вечно
Офлайн
Вот вам кусок кода:
sql8="SELECT `neispr` FROM `kvt` WHERE `nom` = '"+nom+"';" cursor.execute(sql8) answer2 = cursor.fetchall() print(answer2) neispr = str(answer2)[13:len(str(answer2))-3] print(neispr,type(neispr)) neispr = neispr.replace("\\n","\n") print(neispr,type(neispr))
Отредактировано m1r42 (Июль 26, 2022 12:50:01)
Офлайн
m1r42
neispr = str(answer2)[13:len(str(answer2))-3] print(neispr,type(neispr))
Офлайн