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

📄 select.py

📁 SQLAlchemy. 经典的Python ORM框架。学习必看。
💻 PY
📖 第 1 页 / 共 5 页
字号:
            select(["*"], or_(table1.c.myid == 12, table1.c.myid=='asdf', table1.c.myid == 'foo')),            "SELECT * FROM mytable WHERE mytable.myid = :mytable_myid_1 OR mytable.myid = :mytable_myid_2 OR mytable.myid = :mytable_myid_3"        )    def test_orderby_groupby(self):        self.assert_compile(            table2.select(order_by = [table2.c.otherid, asc(table2.c.othername)]),            "SELECT myothertable.otherid, myothertable.othername FROM myothertable ORDER BY myothertable.otherid, myothertable.othername ASC"        )        self.assert_compile(            table2.select(order_by = [table2.c.otherid, table2.c.othername.desc()]),            "SELECT myothertable.otherid, myothertable.othername FROM myothertable ORDER BY myothertable.otherid, myothertable.othername DESC"        )        # generative order_by        self.assert_compile(            table2.select().order_by(table2.c.otherid).order_by(table2.c.othername.desc()),            "SELECT myothertable.otherid, myothertable.othername FROM myothertable ORDER BY myothertable.otherid, myothertable.othername DESC"        )        self.assert_compile(            table2.select().order_by(table2.c.otherid).order_by(table2.c.othername.desc()).order_by(None),            "SELECT myothertable.otherid, myothertable.othername FROM myothertable"        )        self.assert_compile(            select([table2.c.othername, func.count(table2.c.otherid)], group_by = [table2.c.othername]),            "SELECT myothertable.othername, count(myothertable.otherid) AS count_1 FROM myothertable GROUP BY myothertable.othername"        )        # generative group by        self.assert_compile(            select([table2.c.othername, func.count(table2.c.otherid)]).group_by(table2.c.othername),            "SELECT myothertable.othername, count(myothertable.otherid) AS count_1 FROM myothertable GROUP BY myothertable.othername"        )        self.assert_compile(            select([table2.c.othername, func.count(table2.c.otherid)]).group_by(table2.c.othername).group_by(None),            "SELECT myothertable.othername, count(myothertable.otherid) AS count_1 FROM myothertable"        )        self.assert_compile(            select([table2.c.othername, func.count(table2.c.otherid)], group_by = [table2.c.othername], order_by = [table2.c.othername]),            "SELECT myothertable.othername, count(myothertable.otherid) AS count_1 FROM myothertable GROUP BY myothertable.othername ORDER BY myothertable.othername"        )    def test_for_update(self):        self.assert_compile(table1.select(table1.c.myid==7, for_update=True), "SELECT mytable.myid, mytable.name, mytable.description FROM mytable WHERE mytable.myid = :mytable_myid_1 FOR UPDATE")        self.assert_compile(table1.select(table1.c.myid==7, for_update="nowait"), "SELECT mytable.myid, mytable.name, mytable.description FROM mytable WHERE mytable.myid = :mytable_myid_1 FOR UPDATE")        self.assert_compile(table1.select(table1.c.myid==7, for_update="nowait"), "SELECT mytable.myid, mytable.name, mytable.description FROM mytable WHERE mytable.myid = :mytable_myid_1 FOR UPDATE NOWAIT", dialect=oracle.dialect())        self.assert_compile(table1.select(table1.c.myid==7, for_update="read"), "SELECT mytable.myid, mytable.name, mytable.description FROM mytable WHERE mytable.myid = %s LOCK IN SHARE MODE", dialect=mysql.dialect())        self.assert_compile(table1.select(table1.c.myid==7, for_update=True), "SELECT mytable.myid, mytable.name, mytable.description FROM mytable WHERE mytable.myid = %s FOR UPDATE", dialect=mysql.dialect())        self.assert_compile(table1.select(table1.c.myid==7, for_update=True), "SELECT mytable.myid, mytable.name, mytable.description FROM mytable WHERE mytable.myid = :mytable_myid_1 FOR UPDATE", dialect=oracle.dialect())    def test_alias(self):        # test the alias for a table1.  column names stay the same, table name "changes" to "foo".        self.assert_compile(            select([table1.alias('foo')])            ,"SELECT foo.myid, foo.name, foo.description FROM mytable AS foo")        for dialect in (firebird.dialect(), oracle.dialect()):            self.assert_compile(                select([table1.alias('foo')])                ,"SELECT foo.myid, foo.name, foo.description FROM mytable foo"                ,dialect=dialect)        self.assert_compile(            select([table1.alias()])            ,"SELECT mytable_1.myid, mytable_1.name, mytable_1.description FROM mytable AS mytable_1")        # create a select for a join of two tables.  use_labels means the column names will have        # labels tablename_columnname, which become the column keys accessible off the Selectable object.        # also, only use one column from the second table and all columns from the first table1.        q = select([table1, table2.c.otherid], table1.c.myid == table2.c.otherid, use_labels = True)        # make an alias of the "selectable".  column names stay the same (i.e. the labels), table name "changes" to "t2view".        a = alias(q, 't2view')        # select from that alias, also using labels.  two levels of labels should produce two underscores.        # also, reference the column "mytable_myid" off of the t2view alias.        self.assert_compile(            a.select(a.c.mytable_myid == 9, use_labels = True),            "SELECT t2view.mytable_myid AS t2view_mytable_myid, t2view.mytable_name AS t2view_mytable_name, \t2view.mytable_description AS t2view_mytable_description, t2view.myothertable_otherid AS t2view_myothertable_otherid FROM \(SELECT mytable.myid AS mytable_myid, mytable.name AS mytable_name, mytable.description AS mytable_description, \myothertable.otherid AS myothertable_otherid FROM mytable, myothertable \WHERE mytable.myid = myothertable.otherid) AS t2view WHERE t2view.mytable_myid = :t2view_mytable_myid_1"        )    def test_prefixes(self):        self.assert_compile(table1.select().prefix_with("SQL_CALC_FOUND_ROWS").prefix_with("SQL_SOME_WEIRD_MYSQL_THING"),            "SELECT SQL_CALC_FOUND_ROWS SQL_SOME_WEIRD_MYSQL_THING mytable.myid, mytable.name, mytable.description FROM mytable"        )    def test_text(self):        self.assert_compile(            text("select * from foo where lala = bar") ,            "select * from foo where lala = bar"        )        # test bytestring        self.assert_compile(select(            ["foobar(a)", "pk_foo_bar(syslaal)"],            "a = 12",            from_obj = ["foobar left outer join lala on foobar.foo = lala.foo"]        ),        "SELECT foobar(a), pk_foo_bar(syslaal) FROM foobar left outer join lala on foobar.foo = lala.foo WHERE a = 12")        # test unicode        self.assert_compile(select(            [u"foobar(a)", u"pk_foo_bar(syslaal)"],            u"a = 12",            from_obj = [u"foobar left outer join lala on foobar.foo = lala.foo"]        ),        u"SELECT foobar(a), pk_foo_bar(syslaal) FROM foobar left outer join lala on foobar.foo = lala.foo WHERE a = 12")        # test building a select query programmatically with text        s = select()        s.append_column("column1")        s.append_column("column2")        s.append_whereclause("column1=12")        s.append_whereclause("column2=19")        s = s.order_by("column1")        s.append_from("table1")        self.assert_compile(s, "SELECT column1, column2 FROM table1 WHERE column1=12 AND column2=19 ORDER BY column1")        self.assert_compile(            select(["column1", "column2"], from_obj=table1).alias('somealias').select(),            "SELECT somealias.column1, somealias.column2 FROM (SELECT column1, column2 FROM mytable) AS somealias"        )        # test that use_labels doesnt interfere with literal columns        self.assert_compile(            select(["column1", "column2", table1.c.myid], from_obj=table1, use_labels=True),            "SELECT column1, column2, mytable.myid AS mytable_myid FROM mytable"        )        # test that use_labels doesnt interfere with literal columns that have textual labels        self.assert_compile(            select(["column1 AS foobar", "column2 AS hoho", table1.c.myid], from_obj=table1, use_labels=True),            "SELECT column1 AS foobar, column2 AS hoho, mytable.myid AS mytable_myid FROM mytable"        )        print "---------------------------------------------"        s1 = select(["column1 AS foobar", "column2 AS hoho", table1.c.myid], from_obj=[table1])        print "---------------------------------------------"        # test that "auto-labeling of subquery columns" doesnt interfere with literal columns,        # exported columns dont get quoted        self.assert_compile(            select(["column1 AS foobar", "column2 AS hoho", table1.c.myid], from_obj=[table1]).select(),            "SELECT column1 AS foobar, column2 AS hoho, myid FROM (SELECT column1 AS foobar, column2 AS hoho, mytable.myid AS myid FROM mytable)"        )    def test_binds_in_text(self):        self.assert_compile(            text("select * from foo where lala=:bar and hoho=:whee", bindparams=[bindparam('bar', 4), bindparam('whee', 7)]),                "select * from foo where lala=:bar and hoho=:whee",                checkparams={'bar':4, 'whee': 7},        )        self.assert_compile(            text("select * from foo where clock='05:06:07'"),                "select * from foo where clock='05:06:07'",                checkparams={},                params={},        )        dialect = postgres.dialect()        self.assert_compile(            text("select * from foo where lala=:bar and hoho=:whee", bindparams=[bindparam('bar',4), bindparam('whee',7)]),                "select * from foo where lala=%(bar)s and hoho=%(whee)s",                checkparams={'bar':4, 'whee': 7},                dialect=dialect        )        self.assert_compile(            text("select * from foo where clock='05:06:07' and mork='\:mindy'"),            "select * from foo where clock='05:06:07' and mork=':mindy'",            checkparams={},            params={},            dialect=dialect        )        dialect = sqlite.dialect()        self.assert_compile(            text("select * from foo where lala=:bar and hoho=:whee", bindparams=[bindparam('bar',4), bindparam('whee',7)]),                "select * from foo where lala=? and hoho=?",                checkparams={'bar':4, 'whee':7},                dialect=dialect        )        self.assert_compile(select(            [table1, table2.c.otherid, "sysdate()", "foo, bar, lala"],            and_(                "foo.id = foofoo(lala)",                "datetime(foo) = Today",                table1.c.myid == table2.c.otherid,            )        ),        "SELECT mytable.myid, mytable.name, mytable.description, myothertable.otherid, sysdate(), foo, bar, lala \FROM mytable, myothertable WHERE foo.id = foofoo(lala) AND datetime(foo) = Today AND mytable.myid = myothertable.otherid")        self.assert_compile(select(            [alias(table1, 't'), "foo.f"],            "foo.f = t.id",            from_obj = ["(select f from bar where lala=heyhey) foo"]        ),        "SELECT t.myid, t.name, t.description, foo.f FROM mytable AS t, (select f from bar where lala=heyhey) foo WHERE foo.f = t.id")    def test_literal(self):        self.assert_compile(select([literal("foo") + literal("bar")], from_obj=[table1]),            "SELECT :param_1 || :param_2 AS anon_1 FROM mytable")    def test_calculated_columns(self):         value_tbl = table('values',             column('id', Integer),             column('val1', Float),             column('val2', Float),         )         self.assert_compile(             select([value_tbl.c.id, (value_tbl.c.val2 -     value_tbl.c.val1)/value_tbl.c.val1]),             "SELECT values.id, (values.val2 - values.val1) / values.val1 AS anon_1 FROM values"         )         self.assert_compile(             select([value_tbl.c.id], (value_tbl.c.val2 -

⌨️ 快捷键说明

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