我只是学习如何使用SQLAlchemy.我正在尝试执行以下操作,但将标题和链接存储在两个单独的表中:
temp = Submissions(title=u'Facebook Homepage', link=u'http://facebook.com')
session.add(temp)
session.flush()
transaction.commit()
Run Code Online (Sandbox Code Playgroud)
通过:
class Links(Base):
__tablename__ = 'links'
id = Column(Integer, primary_key=True)
link = Column(Text)
created = Column(TIMESTAMP(), default=datetime.now())
def __init__(self, link):
self.link = link
class Submissions(Base):
__tablename__ = 'submissions'
id = Column(Integer, primary_key=True)
created = Column(TIMESTAMP(), default=datetime.now())
title = Column(Text)
link_id = Column(Integer, ForeignKey('links.id'))
link = relation(Links)
def __init__(self, title, link):
self.title = title
self.link = link
Run Code Online (Sandbox Code Playgroud)
但是,我总是得到这个错误:
AttributeError: 'unicode' object has no attribute '_sa_instance_state'
Run Code Online (Sandbox Code Playgroud)
到底是怎么回事?有没有更好的方法来编码?
你不能那样做relationship
.
你需要安排以Link
某种方式查找.
最明显的是直接查找.
submission_link = session.query(Links) \
.filter(Links.link == u'http://facebook.com') \
.first()
if submission_link is None:
submission_link = Links(link=u'http://facebook.com')
session.add(submission_link)
submission = Submissions(title=u'Facebook Homepage', link=submission_link)
session.add(submission)
session.commit()
Run Code Online (Sandbox Code Playgroud)
你也可以使用混合属性来获得看起来更像你的例子的东西,但它更复杂.
此外,它是relationship
,relation
已被弃用.
归档时间: |
|
查看次数: |
13055 次 |
最近记录: |