请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

TypeError: __init__() got an unexpected keyword argument 'query_class'

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#models/base.py
from datetime import datetime
from flask_sqlalchemy import  SQLAlchemy as _SQLAlchemy ,BaseQuery
from sqlalchemy import Column, SmallInteger, Integer
from contextlib import  contextmanager
 
 
class SQLAlchemy(_SQLAlchemy):
    @contextmanager
    def auto_commit(self):
        try:
            yield
            self.session.commit()
        except Exception as e:
            db.session.rollback()
            raise e
 
 
class Query(BaseQuery):
    def filter_by(self**kwargs):
        if 'status' not in kwargs.keys():
            kwargs['status'= 1
        return super(Query, self).filter_by(**kwargs)
 
 
db = SQLAlchemy(query_class = Query)
 
 
class Base(db.Model):
    __abstract__ = True
    create_time = Column('create_time',Integer)
    status = Column(SmallInteger,default=1)
 
 
    def __init__(self):
        self.create_time = int(datetime.now().timestamp)
 
 
    def set_attrs(self,attrs_dict):
        for key,value in attrs_dict.items():
            if hasattr(self,key) and key != 'id':
                setattr(self,key,value)
 
 
    def create_datetime(self):
        if self.create_time:
            return datetime.fromtimestamp(self.create_time)
        else:
            return None

https://img1.sycdn.imooc.com//szimg/5acf46ab00016d2311190355.jpg

正在回答

插入代码

3回答

7七月 2018-04-13 10:21:30

你这什么版本的flask sqlalcheny?

0 回复 有任何疑惑可以回复我~
  • 提问者 SuccessorSocialism #1
    2.0版的,系统是Ubuntu的衍生版
    回复 有任何疑惑可以回复我~ 2018-04-13 10:34:10
  • 提问者 SuccessorSocialism #2
    老师,解决了。我把flask_sqlalcheny的版本升级了。就没有报错了
    回复 有任何疑惑可以回复我~ 2018-04-13 12:36:15
  • 7七月 回复 提问者 SuccessorSocialism #3
    好的。
    回复 有任何疑惑可以回复我~ 2018-04-13 13:59:23
提问者 SuccessorSocialism 2018-04-13 10:04:30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
class Model(object):
    """Baseclass for custom user models."""
 
    #: the query class used.  The :attr:`query` attribute is an instance
    #: of this class.  By default a :class:`BaseQuery` is used.
    query_class = BaseQuery
 
    #: an instance of :attr:`query_class`.  Can be used to query the
    #: database for instances of this model.
    query = None
 
 
class SQLAlchemy(object):
    def __init__(self, app=None,
                 use_native_unicode=True,
                 session_options=None):
        self.use_native_unicode = use_native_unicode
 
        if session_options is None:
            session_options = {}
 
        session_options.setdefault(
            'scopefunc', connection_stack.__ident_func__
        )
 
        self.session = self.create_scoped_session(session_options)
        self.Model = self.make_declarative_base()
        self._engine_lock = Lock()
 
        if app is not None:
            self.app = app
            self.init_app(app)
        else:
            self.app = None
 
        _include_sqlalchemy(self)
        _MapperSignalEvents(self.mapper).register()
        _SessionSignalEvents().register()
        self.Query = BaseQuery
        # 老师我的 query_class没有在SQLAlchemy的构造函数中。。。在它上方的model中


0 回复 有任何疑惑可以回复我~
7七月 2018-04-13 01:29:49

我看了下代码貌似是没有问题的,能不能调试进入到SQLAlchemy的构造函数中看下?

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号