文章内容

2018/7/6 15:23:46,作 者: 黄兵

AttributeError: Neither 'ColumnClause' object nor 'Comparator' object has an attribute 'dispatch'

最近在使用Python SQLAlchemy的时候报如下错误:

AttributeError: Neither 'ColumnClause' object nor 'Comparator' object has an attribute 'dispatch'

看了一下代码:

# 文章相关表
class Article(db.Model):
    __tablename__ = 'article'
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(128))
    body = db.column(db.Text)
    body_html = db.Column(db.Text)
    create_time = db.Column(db.DateTime, index=True)
    real_filename = db.Column(db.String(128))
    seo_link = db.Column(db.String(128))

    @staticmethod
    def on_changed_body(target, value, oldvalue, initiator):
        allowed_tags = ['a', 'abbr', 'acronym', 'b', 'blockquote', 'code',
                        'em', 'i', 'li', 'ol', 'pre', 'strong', 'ul',
                        'h1', 'h2', 'h3', 'p']
        target.body_html = bleach.linkify(bleach.clean(
            markdown(value, output_format='html'),
            tags=allowed_tags, strip=True))


db.event.listen(Article.body, 'set', Article.on_changed_body)

可以看到:

body = db.column(db.Text)

这一行column应该是大写,这里却是小写。


解决方案:

修改代码:

# 文章相关表
class Article(db.Model):
    __tablename__ = 'article'
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(128))
    body = db.Column(db.Text)
    body_html = db.Column(db.Text)
    create_time = db.Column(db.DateTime, index=True)
    real_filename = db.Column(db.String(128))
    seo_link = db.Column(db.String(128))

    @staticmethod
    def on_changed_body(target, value, oldvalue, initiator):
        allowed_tags = ['a', 'abbr', 'acronym', 'b', 'blockquote', 'code',
                        'em', 'i', 'li', 'ol', 'pre', 'strong', 'ul',
                        'h1', 'h2', 'h3', 'p']
        target.body_html = bleach.linkify(bleach.clean(
            markdown(value, output_format='html'),
            tags=allowed_tags, strip=True))


db.event.listen(Article.body, 'set', Article.on_changed_body)

之后再次运行,问题解决,看一下运行截图:



参考资料:Python SQLAlchemy: AttributeError: Neither 'Column' object nor 'Comparator' object has an attribute 'schema'


黄兵个人博客原创。

转载请注明出处:黄兵个人博客 - AttributeError: Neither 'ColumnClause' object nor 'Comparator' object has an attribute 'dispatch'

分享到:

发表评论

评论列表