コード例 #1
0
    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()

        metric_record2 = MetricRecord(data={
            'one': 5,
        })
        metric_record2.save()

        record = JsonQueryset(model=MetricRecord).filter(**{'data->two': 'one'}).first()
        self.assertIsNone(record)

        record = JsonQueryset(model=MetricRecord).filter(**{'data->two': 'two'}).first()
        self.assertEqual(record.data['two'], 'two')

        record = JsonQueryset(model=MetricRecord).filter(**{'data->one': '1'}).first()
        self.assertEqual(record.data['one'], 1)

        record = JsonQueryset(model=MetricRecord).filter(**{'data->one': '2'}).first()
        self.assertIsNone(record)

        records = list(JsonQueryset(model=MetricRecord).order_by('data->one'))
        self.assertEqual(records[0].data['one'], 1)
        self.assertEqual(records[1].data['one'], 5)
コード例 #2
0
    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(), [])
コード例 #3
0
    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 querybuilder_tests_metricrecord.data->\'two\' AS "my_two_alias" FROM '
            'querybuilder_tests_metricrecord WHERE (querybuilder_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 querybuilder_tests_metricrecord.data->\'two\' AS "my_two_alias" FROM '
            'querybuilder_tests_metricrecord WHERE (querybuilder_tests_metricrecord.data->>\'two\' = %(A0)s)'
        ))

        # Django 3.1 changes the raw queryset behavior so querybuilder isn't going to change that behavior
        if VERSION[0] == 3 and VERSION[1] == 1:
            self.assertEqual(query.select(), [{'my_two_alias': '"two"'}])
        else:
            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 querybuilder_tests_metricrecord.data->\'one\' AS "my_one_alias" FROM '
            'querybuilder_tests_metricrecord WHERE (querybuilder_tests_metricrecord.data->>\'one\' = %(A0)s)'
        ))

        # Django 3.1 changes the raw queryset behavior so querybuilder isn't going to change that behavior
        if VERSION[0] == 3 and VERSION[1] == 1:
            self.assertEqual(query.select(), [{'my_one_alias': '1'}])
        else:
            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 querybuilder_tests_metricrecord.data->\'one\' AS "my_one_alias" FROM '
            'querybuilder_tests_metricrecord WHERE (querybuilder_tests_metricrecord.data->>\'one\' = %(A0)s)'
        ))
        self.assertEqual(query.select(), [])
コード例 #4
0
    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(), [])
コード例 #5
0
    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()

        metric_record2 = MetricRecord(data={
            'one': 5,
        })
        metric_record2.save()

        record = JsonQueryset(model=MetricRecord).filter(**{
            'data->two': 'one'
        }).first()
        self.assertIsNone(record)

        record = JsonQueryset(model=MetricRecord).filter(**{
            'data->two': 'two'
        }).first()
        self.assertEqual(record.data['two'], 'two')

        record = JsonQueryset(model=MetricRecord).filter(**{
            'data->one': '1'
        }).first()
        self.assertEqual(record.data['one'], 1)

        record = JsonQueryset(model=MetricRecord).filter(**{
            'data->one': '2'
        }).first()
        self.assertIsNone(record)

        records = list(JsonQueryset(model=MetricRecord).order_by('data->one'))
        self.assertEqual(records[0].data['one'], 1)
        self.assertEqual(records[1].data['one'], 5)
コード例 #6
0
# -*- coding: utf-8 -*-
# Generated by Django 1.9.1 on 2016-02-12 19:03
from __future__ import unicode_literals

from querybuilder.tests.utils import get_postgres_version

# These migrations should only be run during tests and not in your installed app.
try:
    if get_postgres_version() < (9, 4):
        raise ImportError('Invalid Postgres version')
    import django.contrib.postgres.fields.jsonb
    json_field = django.contrib.postgres.fields.jsonb.JSONField()
except ImportError:
    import jsonfield.fields
    json_field = jsonfield.fields.JSONField()
from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

    initial = True

    dependencies = []

    operations = [
        migrations.CreateModel(
            name='Account',
            fields=[
                ('id',
                 models.AutoField(auto_created=True,
コード例 #7
0
# -*- coding: utf-8 -*-
# Generated by Django 1.9.1 on 2016-02-12 19:03
from __future__ import unicode_literals

from querybuilder.tests.utils import get_postgres_version

# These migrations should only be run during tests and not in your installed app.
try:
    if get_postgres_version() < (9, 4):
        raise ImportError('Invalid Postgres version')
    import django.contrib.postgres.fields.jsonb
    json_field = django.contrib.postgres.fields.jsonb.JSONField()
except ImportError:
    import jsonfield.fields
    json_field = jsonfield.fields.JSONField()
from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Account',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),