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')
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'])
def create_table(self): metadata = self.metadata() return Table( 't1', metadata, Column('x', types.Int32, primary_key=True) )
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')
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)]
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)
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')
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')
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)))
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
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}
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)