diff options
| author | Federico Caselli <cfederico87@gmail.com> | 2020-03-14 13:57:42 +0100 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2020-03-15 19:09:04 -0400 |
| commit | 62b7dace0c1d03acf3224085d03a03684a969031 (patch) | |
| tree | 29037c928ce0b5b728a5d7ba2eb24ac6f110664c /lib/sqlalchemy/dialects/mysql/reflection.py | |
| parent | fcc03730c553b3fc0229e446e886d4f61dcb6291 (diff) | |
| download | sqlalchemy-62b7dace0c1d03acf3224085d03a03684a969031.tar.gz | |
Support inspection of computed column
Added support for reflection of "computed" columns, which are now returned
as part of the structure returned by :meth:`.Inspector.get_columns`.
When reflecting full :class:`.Table` objects, computed columns will
be represented using the :class:`.Computed` construct.
Also improve the documentation in :meth:`Inspector.get_columns`, correctly
listing all the returned keys.
Fixes: #5063
Fixes: #4051
Closes: #5064
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/5064
Pull-request-sha: ba00fc321ce468f8885aad23b3dd33c789e50fbe
Change-Id: I789986554fc8ac7f084270474d0b2c12046b1cc2
Diffstat (limited to 'lib/sqlalchemy/dialects/mysql/reflection.py')
| -rw-r--r-- | lib/sqlalchemy/dialects/mysql/reflection.py | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/sqlalchemy/dialects/mysql/reflection.py b/lib/sqlalchemy/dialects/mysql/reflection.py index 94b50ad4f..8aeb1dc96 100644 --- a/lib/sqlalchemy/dialects/mysql/reflection.py +++ b/lib/sqlalchemy/dialects/mysql/reflection.py @@ -249,6 +249,14 @@ class MySQLTableDefinitionParser(object): if comment is not None: comment = comment.replace("\\\\", "\\").replace("''", "'") + sqltext = spec.get("generated") + if sqltext is not None: + computed = dict(sqltext=sqltext) + persisted = spec.get("persistence") + if persisted is not None: + computed["persisted"] = persisted == "STORED" + col_kw["computed"] = computed + col_d = dict( name=name, type=type_instance, default=default, comment=comment ) @@ -376,6 +384,8 @@ class MySQLTableDefinitionParser(object): r"(?:NULL|'(?:''|[^'])*'|[\w\(\)]+" r"(?: +ON UPDATE [\w\(\)]+)?)" r"))?" + r"(?: +(?:GENERATED ALWAYS)? ?AS +(?P<generated>\(" + r".*\))? ?(?P<persistence>VIRTUAL|STORED)?)?" r"(?: +(?P<autoincr>AUTO_INCREMENT))?" r"(?: +COMMENT +'(?P<comment>(?:''|[^'])*)')?" r"(?: +COLUMN_FORMAT +(?P<colfmt>\w+))?" |
