Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 9, 2010 11:52:35

Andys
От:
Зарегистрирован: 2010-09-09
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

ADO/access, кв. скобки в значениях

Система - Win, Python3.1, pywin32 2.14. Access 2010.
База - accdb файл (пров. Microsoft.ACE.OLEDB.12.0)
Проблема - если в ЗНАЧЕНИИ поля в базе попадаются скобки , то чтение рекордсета выкидывает с ошибкой драйвера аксесса “Invalid Pattern String”. Запрос простейший - select * from xxx where number = yyy.

Как только вручную убираю скобки из поля - запрос проходит без ошибок.
Запись таких полей работает (данные заносит похожий питоновский скрипт на этой же машине, через RecordSet, не через инсерты). В записи проблем никогда не возникало ни с чем.
Чтение полей со скобками из других баз (sqlite, mysql) срабатывает. Не проходит запрос именно из аксесса.

Посоветуйте, как заставить его не воспринимать скобки как служебные символы (что, как я подозреваю, он делает). Может, какой-нить параметр при создании соединения?
Что не надо советовать (как я подозреваю, сработает, но потребует прилично времени и усилий) -
1. перейти на другую бд (мне больше нравится sqlite, но скрипт давний и довольно большой, переписывать не хочется да и возможность прямой правки в аксессе иногда полезна)
2. при занесении преобразовывать скобки (т.е. в бд хранить адаптированные значения, а не реальные, при каждом чтении/записи декодировать)

Как предположение - может, сейчас есть уже лучший вариант для работы с АДО чем pywin?



Офлайн

#2 Сен. 9, 2010 12:31:16

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

ADO/access, кв. скобки в значениях

Погуглил тут. Вот такая же проблема http://www.delphigroups.info/2/9/223820.html. Решается экранированием открывающей скобки “[[”. Только у них скобки в выражении поиска, а у вас при чтении. Может тогда и в базе экранировать?



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#3 Сен. 9, 2010 13:27:42

Andys
От:
Зарегистрирован: 2010-09-09
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

ADO/access, кв. скобки в значениях

PooH
Погуглил тут. Вот такая же проблема http://www.delphigroups.info/2/9/223820.html. Решается экранированием открывающей скобки "[[". Только у них скобки в выражении поиска, а у вас при чтении. Может тогда и в базе экранировать?
Ну как бы это подходит под мой пункт 2, что не надо советовать. В базе нужны чистые значения.

По экспериментам выходит - при чтении значения питон начинает его парсить, именно это хочу ему запретить.
В эксель та же запись через тот же драйвер читается нормально, со скобками где надо.
Сильное подозрение, что придется переходить-таки на скульлайт. Ориентировочно, разницы особой не вижу - в тот же аксесс можно же слинкить новую базу и спокойно смотреть её. Возможно будет тормознее, но работать будет…



Отредактировано (Сен. 9, 2010 13:52:54)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version