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

📄 firebird.py

📁 SQLAlchemy. 经典的Python ORM框架。学习必看。
💻 PY
字号:
import testenv; testenv.configure_for_tests()from sqlalchemy import *from sqlalchemy.databases import firebirdfrom sqlalchemy.exceptions import ProgrammingErrorfrom sqlalchemy.sql import table, columnfrom testlib import *class DomainReflectionTest(TestBase, AssertsExecutionResults):    "Test Firebird domains"    __only_on__ = 'firebird'    def setUpAll(self):        con = testing.db.connect()        try:            con.execute('CREATE DOMAIN int_domain AS INTEGER DEFAULT 42 NOT NULL')            con.execute('CREATE DOMAIN str_domain AS VARCHAR(255)')            con.execute('CREATE DOMAIN rem_domain AS BLOB SUB_TYPE TEXT')            con.execute('CREATE DOMAIN img_domain AS BLOB SUB_TYPE BINARY')        except ProgrammingError, e:            if not "attempt to store duplicate value" in str(e):                raise e        con.execute('''CREATE GENERATOR gen_testtable_id''')        con.execute('''CREATE TABLE testtable (question int_domain,                                               answer str_domain DEFAULT 'no answer',                                               remark rem_domain DEFAULT '',                                               photo img_domain,                                               d date,                                               t time,                                               dt timestamp)''')        con.execute('''ALTER TABLE testtable                       ADD CONSTRAINT testtable_pk PRIMARY KEY (question)''')        con.execute('''CREATE TRIGGER testtable_autoid FOR testtable                       ACTIVE BEFORE INSERT AS                       BEGIN                         IF (NEW.question IS NULL) THEN                           NEW.question = gen_id(gen_testtable_id, 1);                       END''')    def tearDownAll(self):        con = testing.db.connect()        con.execute('DROP TABLE testtable')        con.execute('DROP DOMAIN int_domain')        con.execute('DROP DOMAIN str_domain')        con.execute('DROP DOMAIN rem_domain')        con.execute('DROP DOMAIN img_domain')        con.execute('DROP GENERATOR gen_testtable_id')    def test_table_is_reflected(self):        metadata = MetaData(testing.db)        table = Table('testtable', metadata, autoload=True)        self.assertEquals(set(table.columns.keys()),                          set(['question', 'answer', 'remark', 'photo', 'd', 't', 'dt']),                          "Columns of reflected table didn't equal expected columns")        self.assertEquals(table.c.question.primary_key, True)        self.assertEquals(table.c.question.sequence.name, 'gen_testtable_id')        self.assertEquals(table.c.question.type.__class__, firebird.FBInteger)        self.assertEquals(table.c.question.default.arg.text, "42")        self.assertEquals(table.c.answer.type.__class__, firebird.FBString)        self.assertEquals(table.c.answer.default.arg.text, "'no answer'")        self.assertEquals(table.c.remark.type.__class__, firebird.FBText)        self.assertEquals(table.c.remark.default.arg.text, "''")        self.assertEquals(table.c.photo.type.__class__, firebird.FBBinary)        # The following assume a Dialect 3 database        self.assertEquals(table.c.d.type.__class__, firebird.FBDate)        self.assertEquals(table.c.t.type.__class__, firebird.FBTime)        self.assertEquals(table.c.dt.type.__class__, firebird.FBDateTime)class CompileTest(TestBase, AssertsCompiledSQL):    __dialect__ = firebird.FBDialect()    def test_alias(self):        t = table('sometable', column('col1'), column('col2'))        s = select([t.alias()])        self.assert_compile(s, "SELECT sometable_1.col1, sometable_1.col2 FROM sometable sometable_1")    def test_function(self):        self.assert_compile(func.foo(1, 2), "foo(:foo_1, :foo_2)")        self.assert_compile(func.current_time(), "CURRENT_TIME")        self.assert_compile(func.foo(), "foo")        m = MetaData()        t = Table('sometable', m, Column('col1', Integer), Column('col2', Integer))        self.assert_compile(select([func.max(t.c.col1)]), "SELECT max(sometable.col1) AS max_1 FROM sometable")class MiscFBTests(TestBase):    __only_on__ = 'firebird'    def test_strlen(self):        # On FB the length() function is implemented by an external        # UDF, strlen().  Various SA tests fail because they pass a        # parameter to it, and that does not work (it always results        # the maximum string length the UDF was declared to accept).        # This test checks that at least it works ok in other cases.        meta = MetaData(testing.db)        t = Table('t1', meta,            Column('id', Integer, Sequence('t1idseq'), primary_key=True),            Column('name', String(10))        )        meta.create_all()        try:            t.insert(values=dict(name='dante')).execute()            t.insert(values=dict(name='alighieri')).execute()            select([func.count(t.c.id)],func.length(t.c.name)==5).execute().fetchone()[0] == 1        finally:            meta.drop_all()    def test_server_version_info(self):        version = testing.db.dialect.server_version_info(testing.db.connect())        assert len(version) == 3, "Got strange version info: %s" % repr(version)if __name__ == '__main__':    testenv.main()

⌨️ 快捷键说明

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