from sqlobject import * from dbtest import * ######################################## ## Unicode columns ######################################## if supports('non_utf8_encoding'): lat_enc = 'latin1' else: lat_enc = 'utf-8' class Unicode1(SQLObject): count = IntCol(alternateID=True) col1 = UnicodeCol() col2 = UnicodeCol(encoding=lat_enc) def test_create(): setup_class(Unicode1) data = [u'\u00f0', u'test', 'ascii test'] items = [] for i, n in enumerate(data): items.append(Unicode1(count=i, col1=n, col2=n)) for n, item in zip(data, items): item.col1 = item.col2 = n for n, item in zip(data, items): assert item.col1 == item.col2 assert item.col1 == n conn = get_connection() rows = conn.execute_all(""" SELECT count, col1, col2 FROM unicode1 ORDER BY count """) for count, col1, col2 in rows: if isinstance(col1, unicode): # Database is doing encoding... continue assert data[count].encode('utf-8') == col1 assert data[count].encode(lat_enc) == col2