Skip to content

Commit 2629556

Browse files
danohuagronholm
authored andcommitted
Handle invalid characters in table names (agronholm#61)
Fixes agronholm#60.
1 parent 84b4acc commit 2629556

2 files changed

Lines changed: 5 additions & 5 deletions

File tree

sqlacodegen/codegen.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import geoalchemy2 # noqa: F401
2323
except ImportError:
2424
pass
25-
2625
_re_boolean_check_constraint = re.compile(r"(?:(?:.*?)\.)?(.*?) IN \(0, 1\)")
2726
_re_column_name = re.compile(r'(?:(["`]?)(?:.*)\1\.)?(["`]?)(.*)\2')
2827
_re_enum_check_constraint = re.compile(r"(?:(?:.*?)\.)?(.*?) IN \((.+)\)")
@@ -196,8 +195,9 @@ def __init__(self, table, association_tables, inflect_engine, detect_joined):
196195
relationship_ = ManyToManyRelationship(self.name, target_cls, association_table)
197196
self._add_attribute(relationship_.preferred_name, relationship_)
198197

199-
@staticmethod
200-
def _tablename_to_classname(tablename, inflect_engine):
198+
@classmethod
199+
def _tablename_to_classname(cls, tablename, inflect_engine):
200+
tablename = cls._convert_to_valid_identifier(tablename)
201201
camel_case_name = ''.join(part[:1].upper() + part[1:] for part in tablename.split('_'))
202202
return inflect_engine.singular_noun(camel_case_name) or camel_case_name
203203

tests/test_codegen.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1013,7 +1013,7 @@ class SimpleItem(Base):
10131013

10141014
def test_invalid_attribute_names(self):
10151015
Table(
1016-
'simple_items', self.metadata,
1016+
'simple-items', self.metadata,
10171017
Column('id-test', INTEGER, primary_key=True),
10181018
Column('4test', INTEGER),
10191019
Column('_4test', INTEGER),
@@ -1030,7 +1030,7 @@ def test_invalid_attribute_names(self):
10301030
10311031
10321032
class SimpleItem(Base):
1033-
__tablename__ = 'simple_items'
1033+
__tablename__ = 'simple-items'
10341034
10351035
id_test = Column('id-test', Integer, primary_key=True)
10361036
_4test = Column('4test', Integer)

0 commit comments

Comments
 (0)