我正在尝试用几个特定的字段来建立一个数据库(而且我不能离开规范)。其中一个字段是一个名为metadata的列,但是sqlalchemy阻止了这样的情况:
sqlalchemy.exc.InvalidRequestError: Attribute name 'metadata' is reserved for the MetaData instance when using a declarative base class.有什么合适的解决办法吗?我是否需要修改declarative_base函数以重命名metadata属性?我找不到在api文档中重命名该属性的选项。
下面是一些示例代码,如果出现上述错误,这些代码将失败:
#!/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()))发布于 2021-01-14 06:39:21
您可以使用如下:
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找到它
名称字段可以在施工时省略,并在以后应用。
换句话说,您可以按照原来的要求写一个名称。
https://stackoverflow.com/questions/55461914
复制相似问题