@ru_python

Страница 8972 из 9768
LeiDruid
09.05.2019
09:27:05
Использую sqlalchemy с postgres. При попытке сунуть json с юникодом в таблицу в поле JSON через ttable.update() получаю в результате вот такое в таблице: \u0420\u0443\u0441\u0441\u043a\u0438\u0439 в сreate_engine есть client_encoding='utf8', но пробовал и без. Python: 3.6 Postgresql: 9.6 sqlalchemy: 1.2.7

Кодировка в переменной перед insert'ом нормальная

User
09.05.2019
09:28:11
sql = "SELECT car_mark FROM filters WHERE user_id = %s" val = (message.from_user.id) mycursor.execute(sql, (val,)) # bot.send_message(message.from_user.id, exec) Люди как можно получить дату из БД в переменную

MySql юзаю

Google
LeiDruid
09.05.2019
09:28:30
Очевидно, какая-то проблема внутри sqlalchemy, но что-то ничего нагуглить не смог

User
09.05.2019
09:30:39
нет я слово дата

имел ввиду как информацию

LeiDruid
09.05.2019
09:31:34
MySql юзаю
result = mycursor.fetchone()

LeiDruid
09.05.2019
09:32:23
очевидно, “но код я не покажу” да?
покажу, сейчас залью в гист. Я ожидал, что это не проблема кода, а вцелом sqlalchemy

Alex
09.05.2019
09:32:54
зыы: как ты эту строку получил? ты уверен, что там именно repr юникодный как текст записан, а не то чем ты смотришь из базы просто отображает тебе строку как escape-последовательность?

хотя бы сделай select char_length

покажу, сейчас залью в гист. Я ожидал, что это не проблема кода, а вцелом sqlalchemy
ну конечно, такую очевидную проблему с юникодом (если она и правда есть) в алхимии никто бы не заметил.

LeiDruid
09.05.2019
09:35:00
Вот кусок с инсертом: istmt = ttable.update().where(ttable.c.id==i.id).values( group=i.group, locale=i.locale, project_id=i.project_id, content=i.content ) t.execute(istmt)

print(i.content) в консоль показывает нормальную кодировку

Google
Alex
09.05.2019
09:36:31
а… черт поле JSON

я не заметил

LeiDruid
09.05.2019
09:37:30
я не заметил
ну да, так бы я его просто как текст сложил через psycopg

Alex
09.05.2019
09:38:08
надо бы проверить, но ты ведь в курсе что JSON в общем случае не умеет в юникод?

LeiDruid
09.05.2019
09:38:26
почему это ?

Alex
09.05.2019
09:38:31
и экранирует все что не вписывается в ASCII

это нормально

LeiDruid
09.05.2019
09:38:38
Оно же в первой табличке лежит как-то в unicode

Alex
09.05.2019
09:42:11
ты покажи структуру таблиц и что и как лежит?

LeiDruid
09.05.2019
09:43:42
https://pastebin.com/vK9ADdYr

Одинаковые таблицы

Мне нужно между ними контент синхронизировать

Alex
09.05.2019
09:44:08
верней по стандарту оба варианта - валидный JSON. но некоторые реализации (например json в python) по-умолчанию экранирует ен ASCII символы

в запросе content у тебя это какого типа объект?

LeiDruid
09.05.2019
09:45:24
минутку

<class 'dict'>

Так вроде и должно быть

Alex
09.05.2019
09:51:00
а покажи-ка мне SHOW CLIENT_ENCODING у себя в psql?

LeiDruid
09.05.2019
09:52:11
client_encoding ----------------- UTF8

в обеих базах

Google
Alex
09.05.2019
09:56:19
покажи что у тебя в дикте, сделай repr

LeiDruid
09.05.2019
09:57:18
{'language': {'code': 'ru', 'description': 'Русский',

и т.д

т.е. в stdout все хорошо

Alex
09.05.2019
10:03:09
и еще вопрос, покажи как у тебя таблица описана?

в алхимии

LeiDruid
09.05.2019
10:05:12
https://pastebin.com/avDPqpQH

Alex
09.05.2019
10:05:41
JSON - это sqlalchemy.types.JSON?

окей, в общем проблема похоже ясна. SQLA использует стандартный json.dumps \ json.loads для серилализации \ десериализации JSON.

если иное не указано в диалекте

ты можешь это поведение изменить, передав json_serializer= \ json_deserializer= аргументы в create_engine

в твоем случае должно помочь: create_engine(… json_serializer=functools.partial(json.dumps, ensure_ascii=False) )

LeiDruid
09.05.2019
10:22:59
JSON - это sqlalchemy.types.JSON?
это from sqlalchemy.dialects.postgresql import JSON

ага, спасибо, попробую

дааа ))) спасибо, помогло!

Mariya
09.05.2019
10:26:08
Есть ли возможность в программе с графикой открыть стандартный менеджер файлов windows? Например, при нажатии определенной кнопки отрывается окно со стандартным менеджером файлов, пользователь выбирает нужный ему файл, и путь к этому файлу записываться в переменную для дальнейшей работы с ними. Версия питона 3.6

Mariya
09.05.2019
10:28:48
Спасибо!

Alex
09.05.2019
10:30:57
дааа ))) спасибо, помогло!
и этот и предыдущий вариант - был валидный JSON, так как стандарт допускает что любые символы могут экранироваться, то никто не гарантирует что на выходе будет идентичное текстовое представление что и на входе.

Google
Alex
09.05.2019
10:31:31
всегда есть возможность дернуть его через Win32API ^_^

Admin
ERROR: S client not available

User
09.05.2019
10:33:04
counter = 0 for x, y, z in zip(result, result1, result2): counter+=1 bot.send_message(message.from_user.id, (x + y + z)) Бот высылает лишь переменную x

как выслать все 3 в одной строке?\

Tigran
09.05.2019
10:34:13
а ты уверен, что в y и z непустые строки?

User
09.05.2019
10:34:21
уверен

('Vauxhall', 'Viva', 'Боровской') запринтил

они как массив

Tigran
09.05.2019
10:37:48
и бот присылает только первое слово?

User
09.05.2019
10:38:26
да

Tigran
09.05.2019
10:38:39
?

Alex
09.05.2019
10:40:53
быть такого не может

кажется черепашка пиздит

Сергей
09.05.2019
10:41:13
Tigran
09.05.2019
10:41:52
пошла мистика

Alex
09.05.2019
10:49:19
+
эм... а ну покажи весь свой код на pastebin

Aragaer
09.05.2019
12:15:13
чот возник вопрос по структуре данных

Nite
09.05.2019
12:15:31
с днем победы хохлищ! твой прадед тоже за эту землю бился

на сим хватит о политике

Google
Nite
09.05.2019
12:15:43
)

Aragaer
09.05.2019
12:15:57
есть писатель (может быть не один даже), он в эту структуру кладет объекты. Размер структуры ограничен, поэтому начиная с какого-то момента новые объекты начинают перетирать старые (по сути - по возрасту)

FUGO XXX
09.05.2019
12:16:21
Не сегодня

Aragaer
09.05.2019
12:16:32
а есть читатели (больше одного), которые могут из этой структуры реквестить объекты (как правило опять же по возрасту), а могут "ожидать" появления объектов после определенного момента

Aragaer
09.05.2019
12:16:59
вот я привык к тому, что кольцевой буфер это по сути очередь

Nite
09.05.2019
12:17:06
у меня похожий вопрос

Страница 8972 из 9768