Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Базы данных > kinterbasdb


Автор: orthrus 15.6.2010, 07:44
Значит проблема такая, есть код
Код

from dbfpy import dbf
import kinterbasdb as fb

db = dbf.Dbf(".\import\ulica.dbf")
con = fb.connect(host="localhost", database="ZhilFond", user="sysdba",
                password="masterkey",dialect=3,charset="UTF8")
cur = con.cursor()
query = u"insert into SPR_UL (\"name\") values (\"40 лет победы\")"
cur.execute(query)

con.commit()
con.close()

при выполнение выдаёт такую ошибку:
Код

Traceback (most recent call last):
  File "D:\develop\Reestr\mdbf.py", line 33, in <module>
    cur.execute(query)
kinterbasdb.ProgrammingError: (-206, 'isc_dsql_prepare: \n  Dynamic SQL 
Error\n  SQL error code = -206\n  Column unknown\n  40 \xd0\xbb\xd0\xb5\xd1\x82 
\xd0\xbf\xd0\xbe\xd0\xb1\xd0\xb5\xd0\xb4\xd1\x8b\n  At line 1, column 29')

понятно что он не хочет воспринимать юникод, подскажите как это победить?

Автор: orthrus 15.6.2010, 10:11
Всё, разобрался, проблема была во мне, точнее в моём внимании (от усталости наверное smile  ). Для того что бы всё работалонужно было: во первых, в запросе использовать апострофы вместо кавычек, т.е. вот так:
Код

query = u"insert into SPR_UL (NAME) values ('40 лет победы')"

во вторых нужно было разобраться с кодировками полей в самой базе

P.S. вопрос решён.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)