似乎无法找到导致Not Null Failed错误的原因

时间:2017-04-17 19:02:51

标签: python

现在我遇到了一个小问题,我知道它很小但是我让程序员阻塞,似乎无法弄清楚这个错误来自哪里。我正在创建一种向其他用户发送朋友请求的方法。

登录的人将搜索用户并定向到他们的个人资料。然后有一个添加好友链接,它将发送登录用户记录和搜索到的用户记录。然后它将获取它们的两个用户名并将它们保存在数据库表中并添加状态。

来自relationship.py文件的

代码块:

def Send_Valid_Request(User, Request):

    newRequest = Friends(User_1 = User.Username,
                         User_2 = Request.Username,
                         Status = 1)
    db_session.add(newRequest)
    db_session.commit()

    relationship = db_session.query(Friends).\
                        filter(and_(Friends.User_1 == User.Username,
                                    Friends.User_2 == Request.Username)).\
                        filter(Friends.Status == 1).\
                        first()

    if relationship == None:
        flash('There was an error with the request')
        return redirect(url_for('UserProfile', current_user = Request.Username))
    else:
        flash('A request to ' + Request.Username + ' has been sentf')
        return redirect(url_for('Home'))

这是表格:

class Friends(Base):
    __tablename__ = 'friends'

    ID = Column(Integer, primary_key = True)
    User_1 = Column(String(22), nullable = False, index = True)
    User_2 = Column(String(22), nullable = False, index = True)
    Status = Column(Integer, nullable = False)

这是我得到的错误:

IntegrityError: (IntegrityError) NOT NULL constraint failed: Friends.Created u'INSERT INTO friends ("User_1", "User_2", "Status") VALUES (?, ?, ?)' (u'omarjandali', u'hanijandali', 1)

Traceback (most recent call last)
File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/lib/python2.7/dist-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/vagrant/roadtrip/website/__init__.py", line 270, in SendRequest
Send_Valid_Request(currentUser, requestUser)
File "/vagrant/roadtrip/website/relationships.py", line 57, in Send_Valid_Request
db_session.commit()

1 个答案:

答案 0 :(得分:0)

发生错误的原因是,在您的Friends架构中,您添加了ID列,但在插入时您没有提供该列。

  ID = Column(Integer, primary_key = True)

这是因为您的ID列未自动递增。检查数据库是否提供自动递增的序列密钥。