gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 03:01:51 26 4
gpt4 key购买 nike

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

sqlalchemy.exc.InvalidRequestError: Attribute name 'metadata' is reserved for the MetaData instance when using a declarative base class.

是否有合适的解决方法?我是否需要对 declarative_base 函数进行 monkeypatch 以重命名 metadata 属性?我在 api docs 中找不到重命名该属性的选项.

下面是一些会因上述错误而失败的示例代码:

#!/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()))

最佳答案

你可以像这样使用:

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找到它

The name field may be omitted at construction time and applied later

也就是说,你本来可以随便写一个名字。

关于python - 是否可以重命名 SQLAlchemy 声明性基础的元数据属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55461914/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com