Найти - Пользователи
Полная версия: ADO/access, кв. скобки в значениях
Начало » Базы данных » ADO/access, кв. скобки в значениях
1
Andys
Система - 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?
PooH
Погуглил тут. Вот такая же проблема http://www.delphigroups.info/2/9/223820.html. Решается экранированием открывающей скобки “[[”. Только у них скобки в выражении поиска, а у вас при чтении. Может тогда и в базе экранировать?
Andys
PooH
Погуглил тут. Вот такая же проблема http://www.delphigroups.info/2/9/223820.html. Решается экранированием открывающей скобки "[[". Только у них скобки в выражении поиска, а у вас при чтении. Может тогда и в базе экранировать?
Ну как бы это подходит под мой пункт 2, что не надо советовать. В базе нужны чистые значения.

По экспериментам выходит - при чтении значения питон начинает его парсить, именно это хочу ему запретить.
В эксель та же запись через тот же драйвер читается нормально, со скобками где надо.
Сильное подозрение, что придется переходить-таки на скульлайт. Ориентировочно, разницы особой не вижу - в тот же аксесс можно же слинкить новую базу и спокойно смотреть её. Возможно будет тормознее, но работать будет…
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB