Форум сайта python.su
используется sqlobject 1.0
файл “c:\python25\lib\site-packages\SQLObject-0.10.0-py2.5.egg\sqlobject\col.py”, line 513,
class StringValidator(validators.Validator):
def to_python(self, value, state):
if value is None:
return None
if isinstance(value, unicode):
connection = state.soObject._connection
dbEncoding = getattr(connection, "dbEncoding", None) or "ascii"
return value.encode(dbEncoding)
return value
def from_python(self, value, state):
if value is None:
return None
if isinstance(value, str):
return value
if isinstance(value, unicode):
return value.encode("ascii")
return value
Person.dbEncoding = 'cp1251'
if isinstance(value, unicode):
return value.encode("ascii")
Отредактировано (Авг. 15, 2008 09:36:25)
Офлайн
Как установить dbEncoding класса StringValidator в составе SQLObject?
чтобы сделать сделать добавление (insert) данных содержащих символы кириллицы пришлось заменить
dbEncoding = getattr(connection, "dbEncoding", None) or "ascii"
dbEncoding = 'cp1251'
class StringValidator(validators.Validator):
def to_python(self, value, state):
if value is None:
return None
if isinstance(value, unicode):
connection = state.soObject._connection
dbEncoding = getattr(connection, "dbEncoding", None) or "ascii"
dbEncoding = 'cp1251'
print "dbEncoding = %s"%dbEncoding
return value.encode(dbEncoding)
return value
sqlhub.processConnection.dbEncoding = 'cp1251'# MS SQL хранит данные в кодировке cp1251
Офлайн
qmanя добавил con.commit(), у меня заработало. (еще “;” в конце запроса)
сделал такой кодрезультат - ничего не добавляет и ничего не пишет про ошибки# -*- coding: cp1251 -*-
import pymssql
con = pymssql.connect(host='127.0.0.1',user='sa',password='pass', database='sqlobject')
cur = con.cursor()
sql = unicode("insert person (first_name, last_name) values ('%s', '%s')", 'cp1251')
sql = sql%(unicode('Вася', 'cp1251'), unicode('Пупкин', 'cp1251'))
sql = sql.encode('cp1251')
cur.execute(sql)
Офлайн