python - ProgrammingError,Flask with postgres 和 sqlalchemy

标签 python postgresql flask sqlalchemy flask-sqlalchemy

我正在尝试使此设置正常工作,数据库已正确创建,但尝试插入数据时出现以下错误:

在 sqlite 上:

sqlalchemy.exc.OperationalError
OperationalError: (sqlite3.OperationalError) no such column: Author [SQL: u'SELECT count(*) AS count_1 \nFROM (SELECT Author) AS anon_1']

在 postgres 上:

sqlalchemy.exc.ProgrammingError
ProgrammingError: (psycopg2.ProgrammingError) column "author" does not exist
LINE 2: FROM (SELECT Author) AS anon_1
                     ^
 [SQL: 'SELECT count(*) AS count_1 \nFROM (SELECT Author) AS anon_1']

编辑:也许这与它有关:我不明白为什么它说“anon_1”,因为我清楚地使用了凭据?

我已经检查了 postgres 和 sqlite,表创建正确。这似乎是一个 ORM 配置错误,因为它似乎只发生在检查或创建条目时,欢迎任何建议!

class Author(CommonColumns):
    __tablename__ = 'author'
    author = Column(String(200))
    author_url = Column(String(2000))
    author_icon = Column(String(2000))
    comment = Column(String(5000))


registerSchema('author')(Author)


SETTINGS = {
    'SQLALCHEMY_TRACK_MODIFICATIONS': True,
    'SQLALCHEMY_DATABASE_URI': 'sqlite:////tmp/test.db',
    # 'SQLALCHEMY_DATABASE_URI': 'postgresql://xxx:xxx@localhost/test',
}


application = Flask(__name__)

# bind SQLAlchemy
db = application.data.driver
Base.metadata.bind = db.engine
db.Model = Base
db.create_all()

if __name__ == "__main__":
    application.run(debug=True)

最佳答案

您用来插入数据的查询是什么?

我认为错误消息可能比它们需要的更不透明,因为您在三个非常相似的上下文中使用 Author/author:

  • 类名
  • 表名
  • 列名

为了更容易调试,我要做的第一件事是暂时让每一个都是唯一的(AuthorClassauthor_tableauthor_column),这样你可以检查错误消息实际上指的是哪个“作者”。

由于您使用的是 ORM,我怀疑潜在的问题是您的插入语句在实际应该使用 Author.author 时使用了 Author (对象) (属性/列名)。 SELECT 语句提示找不到“author”列,但是因为您对表名和列名都使用了 author,所以不清楚实际传递的是什么进入SQL语句。

关于python - ProgrammingError,Flask with postgres 和 sqlalchemy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33651055/

相关文章:

python - 捕获错误并退出

ruby-on-rails - 如何将 ActiveRecord 模型属性从 json 迁移到 jsonb?

python virtualenv ImportError 没有名为 inspect time flask 的模块

python - 对 max() 内置函数感到困惑

python - F' 字符串字典时语法无效

python - Tkinter 条目小部件出现问题

perl - 使用 Perl 插入到 PostgreSQL 表中

sql - 使用 Postgres 插入数据和设置外键

flask - Flask 应用程序中的双 IPv4 和 IPv6 支持

javascript - 如何从React Form -> Flask Backend -> React Component传递数据(和CORS有关系吗)?