attributeerror:'student'对象没有属性'\u values'

kq0g1dla  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(585)

我正在尝试用cassandra和flask cqlalchemy库编写一个flask应用程序。当我试图创建一个模型类(student)的对象时,它给了我一个错误,叫做'student'对象没有属性'\u values'。通过多个解决方案匹配我的错误,但无法解决此问题。
以下是包含python代码的文件:

  1. from flask import *
  2. from flask_cqlalchemy import CQLAlchemy
  3. app = Flask(__name__)
  4. app.config['CASSANDRA_HOSTS'] = ['127.0.0.1']
  5. app.config['CASSANDRA_KEYSPACE'] = "emp"
  6. db = CQLAlchemy(app)
  7. class Student(db.Model):
  8. uid = db.columns.Integer(primary_key=True)
  9. username = db.columns.Text(required=True)
  10. password = db.columns.Text()
  11. def __init__(self, uid, username, password):
  12. self.uid = uid
  13. self.username = username
  14. self.password = password
  15. @app.route('/')
  16. def show_index():
  17. return render_template('index.html')
  18. @app.route('/add', methods = ['POST', 'GET'])
  19. def add():
  20. if request.method == 'POST':
  21. if not request.form['uid'] or not request.form['username'] or not request.form['password']:
  22. flash('Please enter all the fields', 'error')
  23. else:
  24. student1 = Student(request.form['uid'], request.form['username'], request.form['password'])
  25. student.save()
  26. return render_template("successful.html")
  27. else:
  28. abort(401)
  29. db.sync_db()
  30. if __name__ == '__main__':
  31. app.run(debug = True)

这个是index.html文件

  1. <!DOCTYPE html>
  2. <html lang = "en">
  3. <head><title>index</title></head>
  4. <body>
  5. <form action = "/add" method = "post">
  6. UId: <input type="text" name="uid">
  7. Name: <input type="text" name="username">
  8. Password: <input type="text" name="password">
  9. <input type="submit" value="Submit">
  10. </form>
  11. </body>
  12. </html>

错误日志:

  1. File "/home/sudarshan/python/try/venv/lib/python3.6/site-packages/flask/app.py", line 2463, in __call__
  2. return self.wsgi_app(environ, start_response)
  3. File "/home/sudarshan/python/try/venv/lib/python3.6/site-packages/flask/app.py", line 2449, in wsgi_app
  4. response = self.handle_exception(e)
  5. File "/home/sudarshan/python/try/venv/lib/python3.6/site-packages/flask/app.py", line 1866, in handle_exception
  6. reraise(exc_type, exc_value, tb)
  7. File "/home/sudarshan/python/try/venv/lib/python3.6/site-packages/flask/_compat.py", line 39, in reraise
  8. raise value
  9. File "/home/sudarshan/python/try/venv/lib/python3.6/site-packages/flask/app.py", line 2446, in wsgi_app
  10. response = self.full_dispatch_request()
  11. File "/home/sudarshan/python/try/venv/lib/python3.6/site-packages/flask/app.py", line 1951, in full_dispatch_request
  12. rv = self.handle_user_exception(e)
  13. File "/home/sudarshan/python/try/venv/lib/python3.6/site-packages/flask/app.py", line 1820, in handle_user_exception
  14. reraise(exc_type, exc_value, tb)
  15. File "/home/sudarshan/python/try/venv/lib/python3.6/site-packages/flask/_compat.py", line 39, in reraise
  16. raise value
  17. File "/home/sudarshan/python/try/venv/lib/python3.6/site-packages/flask/app.py", line 1949, in full_dispatch_request
  18. rv = self.dispatch_request()
  19. File "/home/sudarshan/python/try/venv/lib/python3.6/site-packages/flask/app.py", line 1935, in dispatch_request
  20. return self.view_functions[rule.endpoint](**req.view_args)
  21. File "/home/sudarshan/python/try/try1.py", line 31, in add
  22. student1 = Student.create(uid=7, username='sud', password='asdfghjkl')
  23. File "/home/sudarshan/python/try/venv/lib/python3.6/site-packages/cassandra/cqlengine/models.py", line 673, in create
  24. return cls.objects.create(**kwargs)
  25. File "/home/sudarshan/python/try/venv/lib/python3.6/site-packages/cassandra/cqlengine/query.py", line 981, in create
  26. return self.model(**kwargs) \
  27. File "/home/sudarshan/python/try/try1.py", line 16, in __init__
  28. self.uid = uid
  29. File "/home/sudarshan/python/try/venv/lib/python3.6/site-packages/cassandra/cqlengine/models.py", line 318, in __set__
  30. return instance._values[self.column.column_name].setval(value)
  31. AttributeError: 'Student' object has no attribute '_values'
  32. 127.0.0.1 - - [17/Jan/2020 15:38:34] "GET /add?__debugger__=yes&cmd=resource&f=style.css HTTP/1.1" 200 -
  33. 127.0.0.1 - - [17/Jan/2020 15:38:34] "GET /add?__debugger__=yes&cmd=resource&f=jquery.js HTTP/1.1" 200 -
  34. 127.0.0.1 - - [17/Jan/2020 15:38:34] "GET /add?__debugger__=yes&cmd=resource&f=debugger.js HTTP/1.1" 200 -
  35. 127.0.0.1 - - [17/Jan/2020 15:38:34] "GET /add?__debugger__=yes&cmd=resource&f=console.png HTTP/1.1" 200 -
kyks70gy

kyks70gy1#

您没有使用 CQLAlchemy 正确使用图书馆。
您不需要构造函数,但需要使用 create 功能。只要你的课就够了。此外,代码中还有语法错误:

  1. student1 = Student(request.form['uid'], request.form['username'], request.form['password'])
  2. student.save()

应该是的 student1.save() 而不是 student.save() .
模型定义如下所示:

  1. class Student(db.Model):
  2. uid = db.columns.Integer(primary_key=True)
  3. username = db.columns.Text(required=True)
  4. password = db.columns.Text()

在数据库中创建一个条目:

  1. student = Student.create(uid=request.form['uid'], username=request.form['username'], password=request.form['password'])
  2. student.save()

您可以在这里的模型文档中找到更多关于它的信息。

展开查看全部

相关问题