Beispiel #1
0
    def test_table_drop(self):
        table = Table('t1', self.metadata(),
                      Column('x', types.Int32, primary_key=True))

        with mocked_engine() as engine:
            table.drop(if_exists=True)
            engine.assert_sql(['DROP TABLE IF EXISTS t1'])
Beispiel #2
0
    def test_create_table_nested_types(self):
        table = Table('t1', self.metadata(),
                      Column('x', types.Int32, primary_key=True),
                      Column('y', types.Array(types.String)), engines.Memory())

        self.assertEqual(
            self.compile(CreateTable(table)), 'CREATE TABLE t1 '
            '(x Int32, y Array(String)) '
            'ENGINE = Memory')

        table = Table('t1', self.metadata(),
                      Column('x', types.Int32, primary_key=True),
                      Column('y', types.Array(types.Array(types.String))),
                      engines.Memory())

        self.assertEqual(
            self.compile(CreateTable(table)), 'CREATE TABLE t1 '
            '(x Int32, y Array(Array(String))) '
            'ENGINE = Memory')

        table = Table('t1', self.metadata(),
                      Column('x', types.Int32, primary_key=True),
                      Column('y', types.Array(types.Array(types.String))),
                      engines.Memory())

        self.assertEqual(
            self.compile(CreateTable(table)), 'CREATE TABLE t1 '
            '(x Int32, y Array(Array(String))) '
            'ENGINE = Memory')
    def test_insert_from_select_no_format_clause(self):
        metadata = self.metadata()

        bind = session.bind
        bind.cursor = lambda: None

        t1 = Table('t1', metadata, Column('x', types.Int32, primary_key=True))

        t2 = Table('t2', metadata, Column('x', types.Int32, primary_key=True))

        query = t2.insert() \
            .from_select(['x'], session.query(t1.c.x).subquery())
        statement = self.compile(query, bind=bind)
        self.assertEqual(statement, 'INSERT INTO t2 (x) SELECT x FROM t1')
Beispiel #4
0
    def create_table(self):
        metadata = self.metadata()

        return Table(
            't1', metadata,
            Column('x', types.Int32, primary_key=True)
        )
Beispiel #5
0
    def test_drop_table_clause(self):
        table = Table('t1', self.metadata(),
                      Column('x', types.Int32, primary_key=True))

        self.assertEqual(self.compile(DropTable(table)), 'DROP TABLE t1')
        self.assertEqual(self.compile(DropTable(table, if_exists=True)),
                         'DROP TABLE IF EXISTS t1')
Beispiel #6
0
    def create_tables(self, num):
        metadata = self.metadata()

        return [Table(
            't{}'.format(i), metadata,
            Column('x', types.Int32, primary_key=True),
            Column('y', types.Int32, primary_key=True),
        ) for i in range(num)]
Beispiel #7
0
    def test_create_table_without_engine(self):
        no_engine_table = Table('t1', self.metadata(),
                                Column('x', types.Int32, primary_key=True),
                                Column('y', types.String))

        with self.assertRaises(exc.CompileError) as ex:
            self.compile(CreateTable(no_engine_table))

        self.assertEqual(str(ex.exception), "No engine for table 't1'")
    def test_parse_date_types(self):
        mock.add(mock.POST,
                 'http://localhost:8123',
                 status=200,
                 body=('a\n' + 'Date\n' + '2012-10-25\n'))

        table = Table('t1', self.metadata(), Column('a', types.Date))

        rv = session.query(*table.c).first()
        self.assertEqual(rv, (date(2012, 10, 25), ))
    def test_parse_nullable_type(self):
        mock.add(mock.POST,
                 'http://localhost:8123',
                 status=200,
                 body=('a\n' + 'String\n' + '\\N\n' + '\\\\N\n' + '\n'))

        table = Table('t1', self.metadata(), Column('a', types.String))

        rv = session.query(*table.c).all()
        self.assertEqual(rv, [(None, ), ('\\N', ), ('', )])
    def test_parse_func_count(self):
        mock.add(mock.POST,
                 'http://localhost:8123',
                 status=200,
                 body='count_1\nUInt64\n42\n')

        table = Table('t1', self.metadata(),
                      Column('x', types.Int32, primary_key=True))

        rv = session.query(func.count()).select_from(table).scalar()
        self.assertEqual(rv, 42)
Beispiel #11
0
    def test_create_table_nullable(self):
        table = Table('t1', self.metadata(),
                      Column('x', types.Int32, primary_key=True),
                      Column('y', types.Nullable(types.String)),
                      Column('z', types.Nullable(types.String(10))),
                      engines.Memory())

        self.assertEqual(
            self.compile(CreateTable(table)), 'CREATE TABLE t1 '
            '(x Int32, y Nullable(String), z Nullable(FixedString(10))) '
            'ENGINE = Memory')
Beispiel #12
0
    def test_create_table(self):
        table = Table('t1', self.metadata(),
                      Column('x', types.Int32, primary_key=True),
                      Column('y', types.String), Column('z', types.String(10)),
                      engines.Memory())

        # No NOT NULL. And any PKS.
        self.assertEqual(
            self.compile(CreateTable(table)),
            'CREATE TABLE t1 (x Int32, y String, z FixedString(10)) '
            'ENGINE = Memory')
Beispiel #13
0
    def test_text_engine_columns(self):
        table = Table(
            't1',
            self.metadata(),
            Column('date', types.Date, primary_key=True),
            Column('x', types.Int32),
            Column('y', types.String),
            engines.MergeTree('date', ('date', 'x')),
        )

        self.assertEqual(
            self.compile(CreateTable(table)),
            'CREATE TABLE t1 (date Date, x Int32, y String) '
            'ENGINE = MergeTree(date, (date, x), 8192)')
    def test_select_format_clause(self):
        metadata = self.metadata()

        bind = session.bind
        bind.cursor = lambda: None

        table = Table('t1', metadata, Column('x',
                                             types.Int32,
                                             primary_key=True))

        statement = self.compile(session.query(table.c.x), bind=bind)
        self.assertEqual(
            statement,
            'SELECT x AS t1_x FROM t1 FORMAT TabSeparatedWithNamesAndTypes')
    def test_parse_float_types(self):
        types_ = ['Float32', 'Float64']
        columns = ['a', 'b']

        mock.add(mock.POST,
                 'http://localhost:8123',
                 status=200,
                 body=('\t'.join(columns) + '\n' + '\t'.join(types_) + '\n' +
                       '\t'.join(['42'] * len(types_)) + '\n'))

        table = Table('t1', self.metadata(),
                      *[Column(col, types.Float) for col in columns])

        rv = session.query(*table.c).first()
        self.assertEqual(rv, tuple([42.0] * len(columns)))
Beispiel #16
0
    def test_escape_binary_mod(self):
        query = session.query(literal(1) % literal(2))
        self.assertEqual(
            self.compile(query, literal_binds=True),
            'SELECT 1 %% 2 AS anon_1'
        )

        table = Table(
            't', self.metadata(),
            Column('x', types.Int32, primary_key=True),
            engines.Memory()
        )

        query = session.query(table.c.x % table.c.x)
        self.assertEqual(
            self.compile(query, literal_binds=True),
            'SELECT x %% x AS anon_1 FROM t'
        )
    def test_parse_int_types(self):
        types_ = [
            'Int8', 'UInt8', 'Int16', 'UInt16', 'Int32', 'UInt32', 'Int64',
            'UInt64'
        ]
        columns = [chr(i + ord('a')) for i in range(len(types_))]

        mock.add(mock.POST,
                 'http://localhost:8123',
                 status=200,
                 body=('\t'.join(columns) + '\n' + '\t'.join(types_) + '\n' +
                       '\t'.join(['42'] * len(types_)) + '\n'))

        table = Table('t1', self.metadata(),
                      *[Column(col, types.Int) for col in columns])

        rv = session.query(*table.c).first()
        self.assertEqual(rv, tuple([42] * len(columns)))
    def loadFile(self, fileName, enableChecking=True, checkDuplicated=True):
        title = os.path.split(os.path.dirname(fileName))[1]
        sheetName = self.sheetName(fileName)

        if title not in self.wbCache:
            wb = Obj(name=title, sheets=[])
            self.wbCache[title] = wb
        else:
            wb = self.wbCache[title]
        wb.modified = True

        with file(fileName) as f:
            sheet = Obj(title=sheetName, rows=csv.reader(f))
            wb.sheets.append(sheetName)
            h = Table(self, wb, sheet, enableChecking=enableChecking)
            tName = h.tableName
            if checkDuplicated:
                if tName in self.tables and self.tables[tName].preloaded:
                    pass
                else:
                    assert tName not in self.tables, 'duplicated table: %s.%s, exists in: %s' % (
                        h.wb.name, tName, self.tables[tName].wb.name)
            self.tables[tName] = h
        return h
Beispiel #19
0
                     noprintindex=tuple(),
                     rowgrplevels=(1, ),
                     labelconfig=r'./output/label-config.txt',
                     labelorderconfig=r'./output/label-order-config.txt',
                     labelsectionindex=0,
                     printanavar=True)

page = Page(89, 45)
table = Table(Columns(*mydata._loadnumeric(),
                      colorder=('stats', '0.15 mg/kg', '0.20 mg/kg',
                                '0.25 mg/kg'),
                      wrap=False,
                      wrap_header=False,
                      just=('<', '^', '^', '>', '^'),
                      label=(None, '0.15 mg/kg', '0.20 mg/kg', '0.25 mg/kg'),
                      idcols=('stats', ),
                      spacing=(0, 1, 1, 1, 1)),
              page=page,
              title='This is a title~Another title',
              footnotes=[
                  "This is a footnote",
                  (datetime.now().strftime("%d%b%Y:%H:%M:%S").upper(), '>')
              ],
              double_spaced=False)
# table.columns.calculate_width(table.page.linesize)
# print(table.columns.width)

with open(r'C:\Users\sasg\PycharmProjects\report\src\output\test.txt',
          'w') as fl:
    table.print_table(fl)
#
# width = {'stats': 10, "0.15 mg/kg": 10, "0.20 mg/kg": 10, "0.25 mg/kg": 10}
Beispiel #20
0
shoes.sort_values(by=['Region', 'Product', 'Subsidiary'],
                  axis=0,
                  inplace=True,
                  ascending=True)

page = Page(95, 50)
table = Table(Columns(*(Cell(shoes.loc[row, column],
                             colindex=column,
                             rowindex=row) for column in shoes.columns
                        for row in shoes.index),
                      colorder=tuple(shoes.columns),
                      idcols=('Region', 'Product', 'Subsidiary'),
                      label=tuple(shoes.columns),
                      wrap=False,
                      wrap_header=False,
                      spacing=(0, 1, 1, 1, 1, 1, 1),
                      minwidth=10,
                      just='<'),
              page=page,
              title='This is a title',
              footnotes=[
                  "This is a footnote",
                  (datetime.now().strftime("%d%b%Y:%H:%M:%S").upper(), '>')
              ],
              double_spaced=False)
#table.columns.calculate_width(table.page.linesize)

with open(r'C:\Users\sasg\PycharmProjects\report\src\output\test.txt',
          'w') as fl:
    table.print_table(fl)