def test_insert(self): t1.insert().execute({u("méil"): 1, ue("\u6e2c\u8a66"): 5}) t2.insert().execute({u("a"): 1, u("b"): 1}) t3.insert().execute({ ue("\u6e2c\u8a66_id"): 1, ue("unitable1_\u6e2c\u8a66"): 5, u("Unitéble2_b"): 1, ue("\u6e2c\u8a66_self"): 1, }) assert t1.select().execute().fetchall() == [(1, 5)] assert t2.select().execute().fetchall() == [(1, 1)] assert t3.select().execute().fetchall() == [(1, 5, 1, 1)]
def test_unicode(self): m = MetaData() t = Table( ue("\u6e2c\u8a66"), m, Column(ue("\u6e2c\u8a66_id"), Integer) ) expr = select([t]).where(t.c[ue("\u6e2c\u8a66_id")] == 5) expr2 = serializer.loads(serializer.dumps(expr, -1), m) self.assert_compile( expr2, ue( 'SELECT "\u6e2c\u8a66"."\u6e2c\u8a66_id" FROM "\u6e2c\u8a66" ' 'WHERE "\u6e2c\u8a66"."\u6e2c\u8a66_id" = :\u6e2c\u8a66_id_1' ), dialect="default", )
def _assert_errorhandler(self, outconverter, has_errorhandler): data = ue("\uee2c\u9a66") # this is u"\uee2c\u9a66" utf8_w_errors = data.encode("utf-16") if has_errorhandler: eq_( outconverter(utf8_w_errors), data.encode("utf-16").decode("utf-8", "ignore"), ) else: assert_raises(UnicodeDecodeError, outconverter, utf8_w_errors)
def test_repr(self): m = MetaData() t = Table(ue("\u6e2c\u8a66"), m, Column(ue("\u6e2c\u8a66_id"), Integer)) if util.py2k: eq_( repr(t), ("Table('\\u6e2c\\u8a66', MetaData(bind=None), " "Column('\\u6e2c\\u8a66_id', Integer(), " "table=<\u6e2c\u8a66>), " "schema=None)"), ) else: eq_( repr(t), ("Table('測試', MetaData(bind=None), " "Column('測試_id', Integer(), " "table=<測試>), " "schema=None)"), )
def test_reflect(self): t1.insert().execute({u("méil"): 2, ue("\u6e2c\u8a66"): 7}) t2.insert().execute({u("a"): 2, u("b"): 2}) t3.insert().execute({ ue("\u6e2c\u8a66_id"): 2, ue("unitable1_\u6e2c\u8a66"): 7, u("Unitéble2_b"): 2, ue("\u6e2c\u8a66_self"): 2, }) meta = MetaData(testing.db) tt1 = Table(t1.name, meta, autoload=True) tt2 = Table(t2.name, meta, autoload=True) tt3 = Table(t3.name, meta, autoload=True) tt1.insert().execute({u("méil"): 1, ue("\u6e2c\u8a66"): 5}) tt2.insert().execute({u("méil"): 1, ue("\u6e2c\u8a66"): 1}) tt3.insert().execute({ ue("\u6e2c\u8a66_id"): 1, ue("unitable1_\u6e2c\u8a66"): 5, u("Unitéble2_b"): 1, ue("\u6e2c\u8a66_self"): 1, }) self.assert_( tt1.select( order_by=desc(u("méil"))).execute().fetchall() == [(2, 7), (1, 5)]) self.assert_( tt2.select( order_by=desc(u("méil"))).execute().fetchall() == [(2, 2), (1, 1)]) self.assert_( tt3.select(order_by=desc(ue( "\u6e2c\u8a66_id"))).execute().fetchall() == [(2, 7, 2, 2), (1, 5, 1, 1)])
def test_convert_unicode(self): meta = self.metadata t1 = Table( "unitest_table", meta, Column("id", Integer, primary_key=True), Column("descr", mssql.MSText()), ) meta.create_all() with testing.db.connect() as con: con.execute( ue( "insert into unitest_table values ('abc \xc3\xa9 def')" ).encode("UTF-8") ) r = con.execute(t1.select()).first() assert isinstance( r[1], util.text_type ), "%s is %s instead of unicode, working on %s" % ( r[1], type(r[1]), meta.bind, ) eq_(r[1], util.ue("abc \xc3\xa9 def"))
def test_col_targeting(self): t1.insert().execute({u("méil"): 1, ue("\u6e2c\u8a66"): 5}) t2.insert().execute({u("a"): 1, u("b"): 1}) t3.insert().execute({ ue("\u6e2c\u8a66_id"): 1, ue("unitable1_\u6e2c\u8a66"): 5, u("Unitéble2_b"): 1, ue("\u6e2c\u8a66_self"): 1, }) row = t1.select().execute().first() eq_(row[t1.c[u("méil")]], 1) eq_(row[t1.c[ue("\u6e2c\u8a66")]], 5) row = t2.select().execute().first() eq_(row[t2.c[u("a")]], 1) eq_(row[t2.c[u("b")]], 1) row = t3.select().execute().first() eq_(row[t3.c[ue("\u6e2c\u8a66_id")]], 1) eq_(row[t3.c[ue("unitable1_\u6e2c\u8a66")]], 5) eq_(row[t3.c[u("Unitéble2_b")]], 1) eq_(row[t3.c[ue("\u6e2c\u8a66_self")]], 1)
def setup_class(cls): global metadata, t1, t2, t3 metadata = MetaData(testing.db) t1 = Table( u("unitable1"), metadata, Column(u("méil"), Integer, primary_key=True), Column(ue("\u6e2c\u8a66"), Integer), test_needs_fk=True, ) t2 = Table( u("Unitéble2"), metadata, Column(u("méil"), Integer, primary_key=True, key="a"), Column( ue("\u6e2c\u8a66"), Integer, ForeignKey(u("unitable1.méil")), key="b", ), test_needs_fk=True, ) # Few DBs support Unicode foreign keys if testing.against("sqlite"): t3 = Table( ue("\u6e2c\u8a66"), metadata, Column( ue("\u6e2c\u8a66_id"), Integer, primary_key=True, autoincrement=False, ), Column( ue("unitable1_\u6e2c\u8a66"), Integer, ForeignKey(ue("unitable1.\u6e2c\u8a66")), ), Column(u("Unitéble2_b"), Integer, ForeignKey(u("Unitéble2.b"))), Column( ue("\u6e2c\u8a66_self"), Integer, ForeignKey(ue("\u6e2c\u8a66.\u6e2c\u8a66_id")), ), test_needs_fk=True, ) else: t3 = Table( ue("\u6e2c\u8a66"), metadata, Column( ue("\u6e2c\u8a66_id"), Integer, primary_key=True, autoincrement=False, ), Column(ue("unitable1_\u6e2c\u8a66"), Integer), Column(u("Unitéble2_b"), Integer), Column(ue("\u6e2c\u8a66_self"), Integer), test_needs_fk=True, ) metadata.create_all()