def test_basic_schemainspect(): a = ColumnInfo("a", "text", str) a2 = ColumnInfo("a", "text", str) b = ColumnInfo("b", "varchar", str, dbtypestr="varchar(10)") b2 = ColumnInfo( "b", "text", str, dbtypestr="text", default="'d'::text", not_null=True ) assert a == a2 assert a == a assert a != b assert b != b2 alter = b2.alter_table_statements(b, "t") assert alter == [ "alter table t alter column \"b\" set default 'd'::text;", 'alter table t alter column "b" set not null;', 'alter table t alter column "b" set data type text using "b"::text;', ] alter = b.alter_table_statements(b2, "t") assert alter == [ 'alter table t alter column "b" drop default;', 'alter table t alter column "b" drop not null;', 'alter table t alter column "b" set data type varchar(10) using "b"::varchar(10);', ] b.add_column_clause == 'add column "b"' b.drop_column_clause == 'drop column "b"' with temporary_database("sqlite") as dburl: with raises(NotImplementedError): with S(dburl) as s: get_inspector(s)
def test_basic_schemainspect(): a = ColumnInfo('a', 'text', str) a2 = ColumnInfo('a', 'text', str) b = ColumnInfo('b', 'varchar', str, dbtypestr='varchar(10)') b2 = ColumnInfo('b', 'text', str, dbtypestr='text', default="'d'::text", not_null=True) assert a == a2 assert a == a assert a != b assert b != b2 alter = b2.alter_table_statements(b, 't') assert alter == [ 'alter table t alter column "b" set default \'d\'::text;', 'alter table t alter column "b" set not null;', 'alter table t alter column "b" set data type text;', ] alter = b.alter_table_statements(b2, 't') assert alter == [ 'alter table t alter column "b" drop default;', 'alter table t alter column "b" drop not null;', 'alter table t alter column "b" set data type varchar(10);', ] b.add_column_clause == 'add column "b"' b.drop_column_clause == 'drop column "b"' with temporary_database('sqlite') as dburl: with raises(NotImplementedError): with S(dburl) as s: get_inspector(s)
def test_basic_schemainspect(): a = ColumnInfo("a", "text", str) a2 = ColumnInfo("a", "text", str) b = ColumnInfo("b", "varchar", str, dbtypestr="varchar(10)") b2 = ColumnInfo("b", "text", str, dbtypestr="text", default="'d'::text", not_null=True) assert a == a2 assert a == a assert a != b assert b != b2 alter = b2.alter_table_statements(b, "t") assert alter == [ "alter table t alter column \"b\" set default 'd'::text;", 'alter table t alter column "b" set not null;', 'alter table t alter column "b" set data type text using "b"::text;', ] alter = b.alter_table_statements(b2, "t") assert alter == [ 'alter table t alter column "b" drop default;', 'alter table t alter column "b" drop not null;', 'alter table t alter column "b" set data type varchar(10) using "b"::varchar(10);', ] b.add_column_clause == 'add column "b"' b.drop_column_clause == 'drop column "b"' with temporary_database("sqlite") as dburl: with raises(NotImplementedError): with S(dburl) as s: get_inspector(s)
"title" character varying not null, "did" bigint not null, "date_prod" date, "kind" character varying(10), "len" interval hour to minute, "drange" daterange ); """ CV = 'character varying' CV10 = 'character varying(10)' INT = 'interval' INTHM = 'interval hour to minute' PGRANGE = sqlalchemy.dialects.postgresql.ranges.DATERANGE TD = datetime.timedelta FILMS_COLUMNS = od([ ('code', ColumnInfo('code', 'character', str, dbtypestr='character(5)')), ('title', ColumnInfo('title', 'character varying', str)), ('did', ColumnInfo('did', 'bigint', int)), ('date_prod', ColumnInfo('date_prod', 'date', datetime.date)), ('kind', ColumnInfo('kind', CV, str, dbtypestr=CV10)), ('len', ColumnInfo('len', INT, TD, dbtypestr=INTHM)), (u'drange', ColumnInfo('drange', 'daterange', PGRANGE)), ]) FILMSF_COLUMNS = od([ ('title', ColumnInfo('title', 'character varying', str)), ('release_date', ColumnInfo('release_date', 'date', datetime.date)), ]) d1 = ColumnInfo('d', 'date', datetime.date) d2 = ColumnInfo('def_t', 'text', str, default='NULL::text') d3 = ColumnInfo('def_d', 'date', datetime.date, default="'2014-01-01'::date") FILMSF_INPUTS = [d1, d2, d3]
"title" character varying not null, "did" bigint not null, "date_prod" date, "kind" character varying(10), "len" interval hour to minute, "drange" daterange ); """ CV = "character varying" CV10 = "character varying(10)" INT = "interval" INTHM = "interval hour to minute" PGRANGE = sqlalchemy.dialects.postgresql.ranges.DATERANGE TD = datetime.timedelta FILMS_COLUMNS = od([ ("code", ColumnInfo("code", "character", str, dbtypestr="character(5)")), ("title", ColumnInfo("title", "character varying", str)), ("did", ColumnInfo("did", "bigint", int)), ("date_prod", ColumnInfo("date_prod", "date", datetime.date)), ("kind", ColumnInfo("kind", CV, str, dbtypestr=CV10)), ("len", ColumnInfo("len", INT, TD, dbtypestr=INTHM)), ("drange", ColumnInfo("drange", "daterange", PGRANGE)), ]) FILMSF_COLUMNS = od([ ("title", ColumnInfo("title", "character varying", str)), ("release_date", ColumnInfo("release_date", "date", datetime.date)), ]) d1 = ColumnInfo("d", "date", datetime.date) d2 = ColumnInfo("def_t", "text", str, default="NULL::text") d3 = ColumnInfo("def_d", "date", datetime.date, default="'2014-01-01'::date") FILMSF_INPUTS = [d1, d2, d3]