首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以重命名SQLAlchemy声明基的元数据属性?

是否可以重命名SQLAlchemy声明基的元数据属性?
EN

Stack Overflow用户
提问于 2019-04-01 19:05:08
回答 1查看 1.4K关注 0票数 3

我正在尝试用几个特定的字段来建立一个数据库(而且我不能离开规范)。其中一个字段是一个名为metadata的列,但是sqlalchemy阻止了这样的情况:

代码语言:javascript
复制
sqlalchemy.exc.InvalidRequestError: Attribute name 'metadata' is reserved for the MetaData instance when using a declarative base class.

有什么合适的解决办法吗?我是否需要修改declarative_base函数以重命名metadata属性?我找不到在api文档中重命名该属性的选项。

下面是一些示例代码,如果出现上述错误,这些代码将失败:

代码语言:javascript
复制
#!/usr/bin/env python3.7

from sqlalchemy.ext.declarative import declarative_base, declared_attr
from sqlalchemy import Column, Integer


class CustomBase(object):

    @declared_attr
    def __tablename__(cls):
        return cls.__name__.lower()

DBBase = declarative_base(cls=CustomBase)


class Data(DBBase):
    id = Column(Integer, primary_key=True)
    metadata = Column(Integer)

if __name__ == "__main__":
    print(dir(Data()))
EN

回答 1

Stack Overflow用户

发布于 2021-01-14 06:39:21

您可以使用如下:

代码语言:javascript
复制
class Data(DBBase):
    id = Column(Integer, primary_key=True)
    # metadata = Column(Integer)
    metadata_ = Column("metadata", Integer)

Column类的构造函数具有一个name参数。你可以从https://docs.sqlalchemy.org/en/13/core/metadata.html#sqlalchemy.schema.Column找到它

名称字段可以在施工时省略,并在以后应用。

换句话说,您可以按照原来的要求写一个名称。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55461914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档