Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 18, 2010 10:41:51

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

русские имена таблиц и полей win32com ms access

Есть файл базы данных в формате mdb (access 97)
в нём все таблицы и поля в них на русском языку.
Открываю этот файл при помощи win32com.client и он ругается.

Как подружить русские имена таблиц и полей с win32com ????

connection = win32com.client.Dispatch(r'ADODB.Connection')
DSN = ‘PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=c:\\diftarif\\basa.mdb;’
connection.Open(DSN)
recordset = win32com.client.Dispatch(r'ADODB.Recordset')


#Вот сдесь ошибка
recordset.Open('SELECT * FROM Абонент', connection, 1, 3)

fields_dict = {}
for x in range(recordset.RecordCount):

print recordset.Fields(0).Value
recordset.MoveNext()
print u“Всё прошло успешно”
recordset.Close()


А вот сама ошибка

Message File Name Line Position
Traceback
<module> C:\diftarif\diftarif.py 42
OpenBasa C:\diftarif\diftarif.py 12
Open <COMObject ADODB.Recordset> 4
“com_error: (-2147352567, ‘\xce\xf8\xe8\xe1\xea\xe0.’, (0, u'Microsoft JET Database Engine', u”“\u042f\u0434\u0440\u043e \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 Microsoft Jet \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0439\u0442\u0438 \u0432\u0445\u043e\u0434\u043d\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0438\u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441 ‘\u0420\u0452\u0420\xb1\u0420\u0455\u0420\u0405\u0420\xb5\u0420\u0405\u0421\u201a’. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438\u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u043c\u0435\u043d\u0438.”“, None, 5003011, -2147217865), None)”



Офлайн

#2 Авг. 18, 2010 11:27:38

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

русские имена таблиц и полей win32com ms access

Вы бы уж потрудились ошибку нормально напечатать…
“Ядро базы данных Microsoft Jet не может найти входную таблицу или запрос ‘Абонент’. Проверьте существование таблицы или запроса и правильность имени.”

Передавайте в recordset.Open unicode - кажется, он с ними умеет работать



Офлайн

#3 Авг. 18, 2010 12:47:58

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

русские имена таблиц и полей win32com ms access

Благодарю, вы правы это было и за-за unicode
Вот такой вариант прокатил

u'SELECT * FROM Абонент'

А насчет текста ошибки вы декодировали сообщение об ошибке, что-бы его прочитать????
Я не сообразил :-(



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version