Почему следующий код торнадо (в основном из документов) вызывает эту ошибку sqlalchemy.ex c .InvalidRequestError? - PullRequest
0 голосов
/ 07 февраля 2020

Я пытался добавить имя таблицы , но мне это не нужно. Я не нашел никого, кто использовал торнадо с этой ошибкой, но некоторые из них предложили мне создать базу данных. это не описано в документах по торнадо sqlalchemy.

import os
from tornado.ioloop import IOLoop
from tornado.web import Application, RequestHandler
from tornado_sqlalchemy import SQLAlchemy, SessionMixin
from sqlalchemy import Column, BigInteger, String
from tornado.options import define, options


define('port', default=80, help='port to listen on')

db = SQLAlchemy(url="sqlite:///db.sqlite")

class User(db.Model):
    id = Column(BigInteger, primary_key=True)
    username = Column(String(255), unique=True)

class IndexHandler(SessionMixin, RequestHandler):
    def get(self):
        count = self.session.query(User).count()
        self.write('{} users so far!'.format(count))

class LoginHandler(SessionMixin, RequestHandler):
    def get(self):
        if self.get_secure_cookie("session"):
            self.redirect("/") #todo alert logged in
            pass
        self.render("register.html")
    def post(self):
        name=self.get_body_argument("message")
        query=self.session.query(User).filter(username=name).all()
        print(query)


def main():
    settings = dict(
        template_path=os.path.join(os.path.dirname(__file__), "template"),
        static_path=os.path.join(os.path.dirname(__file__), "static"),
        debug=True,
        cookie_secret="dgehhe874",
        login_url="/login",
        # xsrf_cookies=True,
    )
    app = Application(
        (
            (r'/', IndexHandler),
            (r'/login', LoginHandler),
            #(r'/signup', SignupHandler),
        ),
        db=db,
        **settings,
    )
    app.listen(options.port)
    IOLoop.current().start()

if __name__=="__main__":
    main()

Ниже приведена полная ошибка. Мне не очень помогает, поскольку я ничего не могу найти в Google. бла бла не знаю, что еще сказать, но мой вопрос в основном код.

Traceback (most recent call last):
  File "app.py", line 13, in <module>
    class User(db.Model):
  File "/root/shop/lib/python3.7/site-packages/tornado_sqlalchemy/__init__.py", line 172, in __init__
    super(BindMeta, cls).__init__(name, bases, d)
  File "/root/shop/lib/python3.7/site-packages/sqlalchemy/ext/declarative/api.py", line 75, in __init__
    _as_declarative(cls, classname, cls.__dict__)
  File "/root/shop/lib/python3.7/site-packages/sqlalchemy/ext/declarative/base.py", line 131, in _as_declarative
    _MapperConfig.setup_mapping(cls, classname, dict_)
  File "/root/shop/lib/python3.7/site-packages/sqlalchemy/ext/declarative/base.py", line 160, in setup_mapping
    cfg_cls(cls_, classname, dict_)
  File "/root/shop/lib/python3.7/site-packages/sqlalchemy/ext/declarative/base.py", line 192, in __init__
    self._setup_inheritance()
  File "/root/shop/lib/python3.7/site-packages/sqlalchemy/ext/declarative/base.py", line 589, in _setup_inheritance
    "table-mapped class." % cls
sqlalchemy.exc.InvalidRequestError: Class <class '__main__.User'> does not have a __table__ or __tablename__ specified and does not inherit from an existing table-mapped class.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...