# coding: utf-8 import testbase from sqlalchemy import * """verrrrry basic unicode column name testing""" class UnicodeSchemaTest(testbase.PersistTest): def setUpAll(self): global metadata, t1, t2 metadata = MetaData(engine=testbase.db) t1 = Table('unitable1', metadata, Column(u'méil', Integer, primary_key=True), Column(u'éXXm', Integer), ) t2 = Table(u'unitéble2', metadata, Column(u'méil', Integer, primary_key=True, key="a"), Column(u'éXXm', Integer, ForeignKey(u'unitable1.méil'), key="b"), ) metadata.create_all() def tearDown(self): t2.delete().execute() t1.delete().execute() def tearDownAll(self): metadata.drop_all() def test_insert(self): t1.insert().execute({u'méil':1, u'éXXm':5}) t2.insert().execute({'a':1, 'b':1}) assert t1.select().execute().fetchall() == [(1, 5)] assert t2.select().execute().fetchall() == [(1, 1)] def test_reflect(self): t1.insert().execute({u'méil':2, u'éXXm':7}) t2.insert().execute({'a':2, 'b':2}) meta = MetaData(testbase.db) tt1 = Table(t1.name, meta, autoload=True) tt2 = Table(t2.name, meta, autoload=True) tt1.insert().execute({u'méil':1, u'éXXm':5}) tt2.insert().execute({u'méil':1, u'éXXm':1}) assert tt1.select(order_by=desc(u'méil')).execute().fetchall() == [(2, 7), (1, 5)] assert tt2.select(order_by=desc(u'méil')).execute().fetchall() == [(2, 2), (1, 1)] def test_mapping(self): # TODO: this test should be moved to the ORM tests, tests should be # added to this module testing SQL syntax and joins, etc. class A(object):pass class B(object):pass mapper(A, t1, properties={ 't2s':relation(B), 'a':t1.c[u'méil'], 'b':t1.c[u'éXXm'] }) mapper(B, t2) sess = create_session() a1 = A() b1 = B() a1.t2s.append(b1) sess.save(a1) sess.flush() sess.clear() new_a1 = sess.query(A).selectone(t1.c[u'méil'] == a1.a) assert new_a1.a == a1.a assert new_a1.t2s[0].a == b1.a sess.clear() new_a1 = sess.query(A).options(eagerload('t2s')).selectone(t1.c[u'méil'] == a1.a) assert new_a1.a == a1.a assert new_a1.t2s[0].a == b1.a if __name__ == '__main__': testbase.main()