文章内容
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)
之后再次运行,问题解决,看一下运行截图:
黄兵个人博客原创。
评论列表