Created
May 14, 2023 20:54
-
-
Save daaniam/1d8c07ad36587a7fb800fc0db1bdfc46 to your computer and use it in GitHub Desktop.
sqlalchemy model resolve table name
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import re | |
from sqlalchemy.orm import DeclarativeBase, declared_attr | |
def resolve_table_name(name): | |
"""Resolve table name from Class CamelCase""" | |
# Match a letter just before an upper-case char | |
# Example: "Hello World" would match "o" because next "W" is uppercase. | |
names = re.split("(?=[A-Z])", name) | |
# Make lowercase tablename with "_" as word separator. | |
return "_".join([x.lower() for x in names if x]) | |
class CSuiteSABase(DeclarativeBase): | |
"""Base object used by all database model classes""" | |
@declared_attr | |
def __tablename__(self): | |
return resolve_table_name(self.__name__) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment