|
| 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