【发布时间】:2017-07-07 14:46:38
【问题描述】:
当尝试将 Widget 添加到 (SQLite) 数据库并将其与已存在的 User 关联时,定义如下:
class Widget(Base):
__tablename__ = 'widgets'
id = Column(Integer, primary_key=True)
kind = Column(Text)
user = Column(Text, ForeignKey('users.name'))
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(Text, unique=True)
@view_config(route_name='name', renderer='json')
def add_widget(request):
user_name = 'foo'
user = request.dbsession.query(User).filter_by(name=user_name).one()
new_widget = Widget(kind='bar', user=user)
我收到错误sqlalchemy.exc.InterfaceError: (sqlite3.InterfaceError) Error binding parameter 1 - probably unsupported type. [SQL: 'INSERT INTO widgets (kind, user) VALUES (?, ?)'] [parameters: ('bar', <example.models.user.User object at 0x1050bdghd>)]
我可以直接添加user.name 的值,但这会破坏关系。例如,widget.user.name 会给出类似'str' object has no attribute 'repository' 的错误
【问题讨论】:
标签: python sqlite sqlalchemy pyramid