|
| 1 | +from sqlalchemy.types import TypeDecorator |
1 | 2 | from sqlalchemy import Column |
2 | 3 | from sqlalchemy import MetaData |
3 | 4 | from sqlalchemy import Table |
4 | | -from sqlalchemy.types import Boolean |
5 | 5 | from sqlalchemy.types import Integer |
6 | 6 | from sqlalchemy.types import String |
7 | 7 |
|
8 | 8 |
|
9 | 9 | ischema = MetaData() |
10 | 10 |
|
11 | 11 |
|
| 12 | +class YESNO(TypeDecorator): |
| 13 | + impl = String |
| 14 | + |
| 15 | + cache_ok = True |
| 16 | + |
| 17 | + def __init__(self, length=None, **kwargs): |
| 18 | + super().__init__(length, **kwargs) |
| 19 | + |
| 20 | + def process_literal_param(self, value, dialect): |
| 21 | + return 'YES' if value else 'NO' |
| 22 | + |
| 23 | + process_bind_param = process_literal_param |
| 24 | + |
| 25 | + def process_result_value(self, value, dialect): |
| 26 | + return value == 'YES' |
| 27 | + |
| 28 | + |
12 | 29 | schemata = Table( |
13 | 30 | "SCHEMATA", |
14 | 31 | ischema, |
|
37 | 54 | Column("COLUMN_NAME", String, key="column_name"), |
38 | 55 | Column("ORDINAL_POSITION", Integer, key="ordinal_position"), |
39 | 56 | Column("COLUMN_DEFAULT", Integer, key="column_default"), |
40 | | - Column("IS_NULLABLE", Integer, key="is_nullable"), |
| 57 | + Column("IS_NULLABLE", YESNO, key="is_nullable"), |
41 | 58 | Column("DATA_TYPE", String, key="data_type"), |
42 | 59 | Column( |
43 | 60 | "CHARACTER_MAXIMUM_LENGTH", Integer, key="character_maximum_length" |
44 | 61 | ), |
45 | 62 | Column("NUMERIC_PRECISION", Integer, key="numeric_precision"), |
46 | 63 | Column("NUMERIC_SCALE", Integer, key="numeric_scale"), |
47 | 64 | Column("COLLATION_NAME", String, key="collation_name"), |
48 | | - Column("AUTO_INCREMENT", Boolean, key="auto_increment"), |
49 | | - Column("UNIQUE_COLUMN", Boolean, key="unique_column"), |
50 | | - Column("PRIMARY_KEY", Boolean, key="primary_key"), |
| 65 | + Column("AUTO_INCREMENT", YESNO, key="auto_increment"), |
| 66 | + Column("UNIQUE_COLUMN", YESNO, key="unique_column"), |
| 67 | + Column("PRIMARY_KEY", YESNO, key="primary_key"), |
51 | 68 | Column("DESCIPTION", String, key="desciption"), |
52 | 69 | schema="INFORMATION_SCHEMA", |
53 | 70 | ) |
|
58 | 75 | Column("TABLE_CATALOG", String, key="table_catalog"), |
59 | 76 | Column("TABLE_SCHEMA", String, key="table_schema"), |
60 | 77 | Column("TABLE_NAME", String, key="table_name"), |
61 | | - Column("NON_UNIQUE", Boolean, key="non_unique"), |
| 78 | + Column("NON_UNIQUE", YESNO, key="non_unique"), |
62 | 79 | Column("INDEX_CATALOG", String, key="index_catalog"), |
63 | 80 | Column("INDEX_SCHEMA", String, key="index_schema"), |
64 | 81 | Column("INDEX_NAME", String, key="index_name"), |
65 | 82 | Column("ORDINAL_POSITION", Integer, key="ordinal_position"), |
66 | 83 | Column("COLUMN_NAME", String, key="column_name"), |
67 | 84 | Column("ASC_OR_DESC", String, key="asc_or_desc"), |
68 | | - Column("PRIMARY_KEY", Boolean, key="primary_key"), |
| 85 | + Column("PRIMARY_KEY", YESNO, key="primary_key"), |
69 | 86 | schema="INFORMATION_SCHEMA", |
70 | 87 | ) |
71 | 88 |
|
|
0 commit comments