⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unicode.py

📁 SQLAlchemy. 经典的Python ORM框架。学习必看。
💻 PY
字号:
# coding: utf-8"""verrrrry basic unicode column name testing"""import testenv; testenv.configure_for_tests()from sqlalchemy import *from testlib import *from testlib.engines import utf8_enginefrom sqlalchemy.sql import columnclass UnicodeSchemaTest(TestBase):    @testing.unsupported('maxdb', 'oracle', 'sybase')    def setUpAll(self):        global unicode_bind, metadata, t1, t2, t3        unicode_bind = utf8_engine()        metadata = MetaData(unicode_bind)        t1 = Table('unitable1', metadata,            Column(u'm茅il', Integer, primary_key=True),            Column(u'\u6e2c\u8a66', Integer),            test_needs_fk=True,            )        t2 = Table(u'Unit茅ble2', metadata,            Column(u'm茅il', Integer, primary_key=True, key="a"),            Column(u'\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(u'\u6e2c\u8a66', metadata,                       Column(u'\u6e2c\u8a66_id', Integer, primary_key=True,                              autoincrement=False),                       Column(u'unitable1_\u6e2c\u8a66', Integer,                              ForeignKey(u'unitable1.\u6e2c\u8a66')                              ),                       Column(u'Unit茅ble2_b', Integer,                              ForeignKey(u'Unit茅ble2.b')                              ),                       Column(u'\u6e2c\u8a66_self', Integer,                              ForeignKey(u'\u6e2c\u8a66.\u6e2c\u8a66_id')                              ),                       test_needs_fk=True,                       )        else:            t3 = Table(u'\u6e2c\u8a66', metadata,                       Column(u'\u6e2c\u8a66_id', Integer, primary_key=True,                              autoincrement=False),                       Column(u'unitable1_\u6e2c\u8a66', Integer),                       Column(u'Unit茅ble2_b', Integer),                       Column(u'\u6e2c\u8a66_self', Integer),                       test_needs_fk=True,                       )        metadata.create_all()    @testing.unsupported('maxdb', 'oracle', 'sybase')    def tearDown(self):        if metadata.tables:            t3.delete().execute()            t2.delete().execute()            t1.delete().execute()    @testing.unsupported('maxdb', 'oracle', 'sybase')    def tearDownAll(self):        global unicode_bind        metadata.drop_all()        del unicode_bind    @testing.unsupported('maxdb', 'oracle', 'sybase')    def test_insert(self):        t1.insert().execute({u'm茅il':1, u'\u6e2c\u8a66':5})        t2.insert().execute({'a':1, 'b':1})        t3.insert().execute({u'\u6e2c\u8a66_id': 1,                             u'unitable1_\u6e2c\u8a66': 5,                             u'Unit茅ble2_b': 1,                             u'\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)]    @testing.unsupported('maxdb', 'oracle', 'sybase')    def test_reflect(self):        t1.insert().execute({u'm茅il':2, u'\u6e2c\u8a66':7})        t2.insert().execute({'a':2, 'b':2})        t3.insert().execute({u'\u6e2c\u8a66_id': 2,                             u'unitable1_\u6e2c\u8a66': 7,                             u'Unit茅ble2_b': 2,                             u'\u6e2c\u8a66_self': 2})        meta = MetaData(unicode_bind)        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, u'\u6e2c\u8a66':5})        tt2.insert().execute({u'm茅il':1, u'\u6e2c\u8a66':1})        tt3.insert().execute({u'\u6e2c\u8a66_id': 1,                              u'unitable1_\u6e2c\u8a66': 5,                              u'Unit茅ble2_b': 1,                              u'\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(u'\u6e2c\u8a66_id')).                     execute().fetchall() ==                     [(2, 7, 2, 2), (1, 5, 1, 1)])        meta.drop_all()        metadata.create_all()class EscapesDefaultsTest(testing.TestBase):    def test_default_exec(self):        metadata = MetaData(testing.db)        t1 = Table('t1', metadata,            Column(u'special_col', Integer, Sequence('special_col'), primary_key=True),            Column('data', String(50)) # to appease SQLite without DEFAULT VALUES            )        t1.create()        try:            engine = metadata.bind                        # reset the identifier preparer, so that we can force it to cache            # a unicode identifier            engine.dialect.identifier_preparer = engine.dialect.preparer(engine.dialect)            select([column(u'special_col')]).select_from(t1).execute()            assert isinstance(engine.dialect.identifier_preparer.format_sequence(Sequence('special_col')), unicode)                        # now execute, run the sequence.  it should run in u"Special_col.nextid" or similar as             # a unicode object; cx_oracle asserts that this is None or a String (postgres lets it pass thru).            # ensure that base.DefaultRunner is encoding.            t1.insert().execute(data='foo')        finally:            t1.drop()if __name__ == '__main__':    testenv.main()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -