SqlAlchemy数据库问题

时间:2014-03-11 08:25:00

标签: python orm sqlalchemy

我创建了一个表一个Bmarks,它有两个与同一个表有关系的外键Url_hash

class Hashed(Base):
    __tablename__ = "url_hash"

    hash_id = Column(Unicode(22), primary_key=True)
    url = Column(UnicodeText)
    clicks = Column(Integer, default=0)

    def __init__(self, url):
        cleaned_url = str(unidecode(url))
        self.hash_id = unicode(generate_hash(cleaned_url))
        self.url = url

class Bmark(Base):
    __tablename__ = "bmarks"

    bid = Column(Integer, autoincrement=True, primary_key=True)
    hash_id = Column(Unicode(22), ForeignKey('url_hash.hash_id'))
    clean_hash_id = Column(Unicode(22), ForeignKey('url_hash.hash_id'))
    description = Column(UnicodeText())
    extended = Column(UnicodeText())
    stored = Column(DateTime, default=datetime.utcnow)
    updated = Column(DateTime, onupdate=datetime.utcnow)
    clicks = Column(Integer, default=0)
    inserted_by = Column(Unicode(255))
    username = Column(Unicode(255), ForeignKey('users.username'),
                      nullable=False,)
    tag_str = Column(UnicodeText())

    hashed = relation(Hashed,
                      foreign_keys="Bmark.hash_id",
                      backref="bmark",
                      uselist=False
                      )

    clean_hashed = relation(Hashed,
                      foreign_keys="Bmark.clean_hash_id",
                      backref="bmark",
                      uselist=False
                      )

我想在清理它之后存储url有点像删除标题,utm参数等用于索引目的 创建数据库时发生错误

sqlalchemy.exc.ArgumentError: Error creating backref 'bmark' on relationship 'Bmark.clean_hashed': property of that name exists on mapper 'Mapper|Hashed|url_hash'

1 个答案:

答案 0 :(得分:0)

实际上错误信息非常有用 只需将backref="bmark"之一重命名为backref="my_clean_bmark"之类的其他内容。