当前位置: 首页>>代码示例>>Python>>正文


Python Query.get_sql方法代码示例

本文整理汇总了Python中querybuilder.query.Query.get_sql方法的典型用法代码示例。如果您正苦于以下问题:Python Query.get_sql方法的具体用法?Python Query.get_sql怎么用?Python Query.get_sql使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在querybuilder.query.Query的用法示例。


在下文中一共展示了Query.get_sql方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: test_one

# 需要导入模块: from querybuilder.query import Query [as 别名]
# 或者: from querybuilder.query.Query import get_sql [as 别名]
    def test_one(self):
        if get_postgres_version() < (9, 4):
            raise unittest.SkipTest('Invalid Postgres version for test')

        metric_record = MetricRecord(data={
            'one': 1,
            'two': 'two',
        })
        metric_record.save()

        one_field = JsonField('data', key='one', alias='my_one_alias')
        two_field = JsonField('data', key='two', alias='my_two_alias')

        query = Query().from_table(MetricRecord, fields=[two_field]).where(**{
            two_field.get_where_key(): 'one'
        })
        self.assertEqual(
            query.get_sql(),
            (
                'SELECT tests_metricrecord.data->\'two\' AS "my_two_alias" FROM tests_metricrecord '
                'WHERE (tests_metricrecord.data->>\'two\' = %(A0)s)'
            )
        )
        self.assertEqual(query.select(), [])

        query = Query().from_table(MetricRecord, fields=[two_field]).where(**{
            two_field.get_where_key(): 'two'
        })
        self.assertEqual(
            query.get_sql(),
            (
                'SELECT tests_metricrecord.data->\'two\' AS "my_two_alias" FROM tests_metricrecord '
                'WHERE (tests_metricrecord.data->>\'two\' = %(A0)s)'
            )
        )
        self.assertEqual(query.select(), [{'my_two_alias': 'two'}])

        query = Query().from_table(MetricRecord, fields=[one_field]).where(**{
            one_field.get_where_key(): '1'
        })
        self.assertEqual(
            query.get_sql(),
            (
                'SELECT tests_metricrecord.data->\'one\' AS "my_one_alias" FROM tests_metricrecord '
                'WHERE (tests_metricrecord.data->>\'one\' = %(A0)s)'
            )
        )
        self.assertEqual(query.select(), [{'my_one_alias': 1}])

        query = Query().from_table(MetricRecord, fields=[one_field]).where(**{
            one_field.get_where_key(): '2'
        })
        self.assertEqual(
            query.get_sql(),
            (
                'SELECT tests_metricrecord.data->\'one\' AS "my_one_alias" FROM tests_metricrecord '
                'WHERE (tests_metricrecord.data->>\'one\' = %(A0)s)'
            )
        )
        self.assertEqual(query.select(), [])
开发者ID:ambitioninc,项目名称:django-query-builder,代码行数:62,代码来源:json_tests.py

示例2: test_cannot_mix_distincts

# 需要导入模块: from querybuilder.query import Query [as 别名]
# 或者: from querybuilder.query.Query import get_sql [as 别名]
    def test_cannot_mix_distincts(self):
        query = Query().from_table(
            table=Account
        ).distinct_on('field1').distinct()

        with self.assertRaises(ValueError):
            query.get_sql()
开发者ID:ambitioninc,项目名称:django-query-builder,代码行数:9,代码来源:select_tests.py

示例3: test_get_alias

# 需要导入模块: from querybuilder.query import Query [as 别名]
# 或者: from querybuilder.query.Query import get_sql [as 别名]
    def test_get_alias(self):
        """
        Tests the different cases of getting the alias of a field
        """
        field = SimpleField(field="revenue")
        query = Query().from_table(table=Order, fields=[field])
        expected_query = "SELECT tests_order.revenue FROM tests_order"
        self.assertEqual(expected_query, query.get_sql())

        field.auto_alias = "my_auto_alias"
        query = Query().from_table(table=Order, fields=[field])
        expected_query = 'SELECT tests_order.revenue AS "my_auto_alias" FROM tests_order'
        self.assertEqual(expected_query, query.get_sql())

        field.alias = "my_alias"
        query = Query().from_table(table=Order, fields=[field])
        expected_query = 'SELECT tests_order.revenue AS "my_alias" FROM tests_order'
        self.assertEqual(expected_query, query.get_sql())

        query = Query().from_table(table=Order, fields=[field], prefix_fields=True, field_prefix="my_field_prefix")
        expected_query = 'SELECT tests_order.revenue AS "my_field_prefix__my_alias" FROM tests_order'
        self.assertEqual(expected_query, query.get_sql())

        field.alias = None
        field.auto_alias = None
        query = Query().from_table(table=Order, fields=[field], prefix_fields=True, field_prefix="my_field_prefix")
        expected_query = 'SELECT tests_order.revenue AS "my_field_prefix__revenue" FROM tests_order'
        self.assertEqual(expected_query, query.get_sql())
开发者ID:ambitioninc,项目名称:django-query-builder,代码行数:30,代码来源:field_tests.py

示例4: test_one

# 需要导入模块: from querybuilder.query import Query [as 别名]
# 或者: from querybuilder.query.Query import get_sql [as 别名]
    def test_one(self):
        metric_record = MetricRecord(data={
            'one': 1,
            'two': 'two',
        })
        metric_record.save()

        one_field = JsonField('data', key='one', alias='my_one_alias')
        two_field = JsonField('data', key='two', alias='my_two_alias')

        query = Query().from_table(MetricRecord, fields=[two_field]).where(**{
            two_field.get_where_key(): 'one'
        })
        self.assertEqual(
            query.get_sql(),
            (
                'SELECT tests_metricrecord.data->\'two\' AS my_two_alias FROM tests_metricrecord '
                'WHERE (tests_metricrecord.data->>\'two\' = %(A0)s)'
            )
        )
        self.assertEqual(query.select(), [])

        query = Query().from_table(MetricRecord, fields=[two_field]).where(**{
            two_field.get_where_key(): 'two'
        })
        self.assertEqual(
            query.get_sql(),
            (
                'SELECT tests_metricrecord.data->\'two\' AS my_two_alias FROM tests_metricrecord '
                'WHERE (tests_metricrecord.data->>\'two\' = %(A0)s)'
            )
        )
        self.assertEqual(query.select(), [{'my_two_alias': 'two'}])

        query = Query().from_table(MetricRecord, fields=[one_field]).where(**{
            one_field.get_where_key(): '1'
        })
        self.assertEqual(
            query.get_sql(),
            (
                'SELECT tests_metricrecord.data->\'one\' AS my_one_alias FROM tests_metricrecord '
                'WHERE (tests_metricrecord.data->>\'one\' = %(A0)s)'
            )
        )
        self.assertEqual(query.select(), [{'my_one_alias': 1}])

        query = Query().from_table(MetricRecord, fields=[one_field]).where(**{
            one_field.get_where_key(): '2'
        })
        self.assertEqual(
            query.get_sql(),
            (
                'SELECT tests_metricrecord.data->\'one\' AS my_one_alias FROM tests_metricrecord '
                'WHERE (tests_metricrecord.data->>\'one\' = %(A0)s)'
            )
        )
        self.assertEqual(query.select(), [])
开发者ID:AlexandrPaveluc,项目名称:django-query-builder,代码行数:59,代码来源:json_tests.py

示例5: test_distinct

# 需要导入模块: from querybuilder.query import Query [as 别名]
# 或者: from querybuilder.query.Query import get_sql [as 别名]
    def test_distinct(self):
        query = Query().from_table(table=Account).distinct()

        query_str = query.get_sql()
        expected_query = "SELECT DISTINCT tests_account.* FROM tests_account"
        self.assertEqual(query_str, expected_query, get_comparison_str(query_str, expected_query))

        query.distinct(use_distinct=False)

        query_str = query.get_sql()
        expected_query = "SELECT tests_account.* FROM tests_account"
        self.assertEqual(query_str, expected_query, get_comparison_str(query_str, expected_query))
开发者ID:mypebble,项目名称:django-query-builder,代码行数:14,代码来源:select_tests.py

示例6: test_inner

# 需要导入模块: from querybuilder.query import Query [as 别名]
# 或者: from querybuilder.query.Query import get_sql [as 别名]
    def test_inner(self):
        inner_query = Query().from_table(Account)
        query = Query().from_table(inner_query)

        query_str = query.get_sql()
        expected_query = "WITH T0 AS (SELECT tests_account.* FROM tests_account) SELECT T0.* FROM T0"
        self.assertEqual(query_str, expected_query, get_comparison_str(query_str, expected_query))

        inner_query = Query().from_table(Account)

        query = Query().with_query(inner_query, "s3").from_table("s3")
        query_str = query.get_sql()
        expected_query = "WITH s3 AS (SELECT tests_account.* FROM tests_account) SELECT s3.* FROM s3"
        self.assertEqual(query_str, expected_query, get_comparison_str(query_str, expected_query))
开发者ID:mypebble,项目名称:django-query-builder,代码行数:16,代码来源:select_tests.py

示例7: test_join_model_fields_extract

# 需要导入模块: from querybuilder.query import Query [as 别名]
# 或者: from querybuilder.query.Query import get_sql [as 别名]
    def test_join_model_fields_extract(self):
        query = Query().from_table(
            table=Account,
            fields=[
                '*',
            ]
        ).join(
            Order,
            fields=[
                '*'
            ]
        )

        query_str = query.get_sql()
        expected_query = (
            'SELECT tests_account.*, '
            'tests_order.id, '
            'tests_order.account_id, '
            'tests_order.revenue, '
            'tests_order.margin, '
            'tests_order.margin_percent, '
            'tests_order.time '
            'FROM tests_account '
            'JOIN tests_order ON tests_order.account_id = tests_account.id'
        )
        self.assertEqual(query_str, expected_query, get_comparison_str(query_str, expected_query))
开发者ID:ambitioninc,项目名称:django-query-builder,代码行数:28,代码来源:join_tests.py

示例8: test_join_model_fields

# 需要导入模块: from querybuilder.query import Query [as 别名]
# 或者: from querybuilder.query.Query import get_sql [as 别名]
    def test_join_model_fields(self):
        query = Query().from_table(
            table=Account,
            fields=[
                'one',
                'two',
            ]
        ).join(
            Order,
            fields=[{
                'three': 'one'
            }, {
                'four': 'two'
            }]
        )

        query_str = query.get_sql()
        expected_query = (
            'SELECT tests_account.one, '
            'tests_account.two, '
            'tests_order.one AS "three", '
            'tests_order.two AS "four" '
            'FROM tests_account '
            'JOIN tests_order ON tests_order.account_id = tests_account.id'
        )
        self.assertEqual(query_str, expected_query, get_comparison_str(query_str, expected_query))
开发者ID:ambitioninc,项目名称:django-query-builder,代码行数:28,代码来源:join_tests.py

示例9: test_where_complex

# 需要导入模块: from querybuilder.query import Query [as 别名]
# 或者: from querybuilder.query.Query import get_sql [as 别名]
    def test_where_complex(self):
        query = Query().from_table(
            table='test_table'
        ).where(Q(
            one=1
        )).where(Q(
            two__gt=2
        )).where(~Q(
            three__gte=3
        )).where(~Q(
            four__lt=4
        ), OR).where(Q(
            five__lte=5
        ), OR).where(Q(
            six__contains='six'
        )).where(~Q(
            seven__startswith='seven'
        )).where(Q(
            eight=8
        ) & Q(
            nine=9
        ) | Q(
            ten=10
        ) | ~Q(
            eleven=11
        ))

        query_str = query.get_sql()
        expected_query = ''.join([
            'SELECT test_table.* FROM test_table WHERE ',
            '(((one = %(A0)s AND two > %(A1)s AND (NOT(three >= %(A2)s))) OR (NOT(four < %(A3)s)) ',
            'OR five <= %(A4)s) AND (six LIKE %(A5)s) AND (NOT(seven LIKE %(A6)s)) AND ',
            '((eight = %(A7)s AND nine = %(A8)s) OR ten = %(A9)s OR (NOT(eleven = %(A10)s))))'
        ])
        self.assertEqual(query_str, expected_query, get_comparison_str(query_str, expected_query))
开发者ID:ambitioninc,项目名称:django-query-builder,代码行数:37,代码来源:where_tests.py

示例10: test_cast

# 需要导入模块: from querybuilder.query import Query [as 别名]
# 或者: from querybuilder.query.Query import get_sql [as 别名]
    def test_cast(self):
        query = Query().from_table(
            table=Account,
            fields=[
                CountField(
                    'id',
                    alias='count',
                    cast='float'
                )
            ]
        )

        query_str = query.get_sql()
        expected_query = 'SELECT CAST(COUNT(tests_account.id) AS FLOAT) AS count FROM tests_account'
        self.assertEqual(query_str, expected_query, get_comparison_str(query_str, expected_query))

        received = query.select()[0]['count']
        expected = float(len(User.objects.all()))
        self.assertEqual(
            received,
            expected,
            'Expected {0} but received {1}'.format(
                expected,
                received
            )
        )
开发者ID:micahhausler,项目名称:django-query-builder,代码行数:28,代码来源:query_tests.py

示例11: test_week_grouping

# 需要导入模块: from querybuilder.query import Query [as 别名]
# 或者: from querybuilder.query.Query import get_sql [as 别名]
 def test_week_grouping(self):
     """
     Verifies that the week grouping query and result is correct
     """
     query = Query().from_table(
         table=Order,
         fields=[
             Week('time', auto=True),
             SumField('margin')
         ]
     )
     expected_query = (
         "SELECT CAST(EXTRACT(year FROM tests_order.time) AS INT) AS time__year, "
         "CAST(EXTRACT(week FROM tests_order.time) AS INT) AS time__week, "
         "CAST(EXTRACT(epoch FROM date_trunc('week', tests_order.time)) AS INT) AS time__epoch, "
         "SUM(tests_order.margin) AS margin_sum "
         "FROM tests_order "
         "GROUP BY time__year, time__week, time__epoch "
         "ORDER BY time__epoch ASC"
     )
     self.assertEqual(expected_query, query.get_sql())
     rows = query.select()
     self.assertEqual(1, len(rows))
     week_dt = datetime.datetime(2012, 10, 19)
     week_unix_time = unix_time(floor(week_dt, week=1))
     self.assertEqual(825.0, rows[0]['margin_sum'])
     self.assertEqual(week_unix_time, rows[0]['time__epoch'])
     self.assertEqual(2012, rows[0]['time__year'])
     self.assertEqual(42, rows[0]['time__week'])
开发者ID:AlexandrPaveluc,项目名称:django-query-builder,代码行数:31,代码来源:field_tests.py

示例12: test_join_model_fields_prefix

# 需要导入模块: from querybuilder.query import Query [as 别名]
# 或者: from querybuilder.query.Query import get_sql [as 别名]
    def test_join_model_fields_prefix(self):
        query = Query().from_table(
            table=Account,
            fields=[
                '*',
            ]
        ).join(
            Order,
            fields=[
                'id',
                'margin',
            ],
            prefix_fields=True
        )

        query_str = query.get_sql()

        expected_query = (
            'SELECT tests_account.*, '
            'tests_order.id AS "order__id", '
            'tests_order.margin AS "order__margin" '
            'FROM tests_account '
            'JOIN tests_order ON tests_order.account_id = tests_account.id'
        )
        self.assertEqual(query_str, expected_query)
开发者ID:ambitioninc,项目名称:django-query-builder,代码行数:27,代码来源:join_tests.py

示例13: test_rank

# 需要导入模块: from querybuilder.query import Query [as 别名]
# 或者: from querybuilder.query.Query import get_sql [as 别名]
 def test_rank(self):
     query = Query().from_table(
         table=Order,
         fields=[
             'id',
             RankField(
                 over=QueryWindow().partition_by(
                     'account_id'
                 ).order_by(
                     'id'
                 )
             )
         ]
     ).order_by(
         '-rank'
     )
     query_str = query.get_sql()
     expected_query = (
         'SELECT tests_order.id, '
         'RANK() OVER (PARTITION BY account_id ORDER BY id ASC) AS "rank" '
         'FROM tests_order '
         'ORDER BY rank '
         'DESC'
     )
     self.assertEqual(query_str, expected_query, get_comparison_str(query_str, expected_query))
开发者ID:ambitioninc,项目名称:django-query-builder,代码行数:27,代码来源:window_tests.py

示例14: test_select_all_from_model

# 需要导入模块: from querybuilder.query import Query [as 别名]
# 或者: from querybuilder.query.Query import get_sql [as 别名]
 def test_select_all_from_model(self):
     query = Query().from_table(
         table=Account
     )
     query_str = query.get_sql()
     expected_query = 'SELECT tests_account.* FROM tests_account'
     self.assertEqual(query_str, expected_query, get_comparison_str(query_str, expected_query))
开发者ID:ambitioninc,项目名称:django-query-builder,代码行数:9,代码来源:select_tests.py

示例15: test_select_all_from_string

# 需要导入模块: from querybuilder.query import Query [as 别名]
# 或者: from querybuilder.query.Query import get_sql [as 别名]
 def test_select_all_from_string(self):
     query = Query().from_table(
         table='test_table'
     )
     query_str = query.get_sql()
     expected_query = 'SELECT test_table.* FROM test_table'
     self.assertEqual(query_str, expected_query, get_comparison_str(query_str, expected_query))
开发者ID:ambitioninc,项目名称:django-query-builder,代码行数:9,代码来源:select_tests.py


注:本文中的querybuilder.query.Query.get_sql方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。