首页 > 解决方案 > SQLALCHEMY_DATABASE_URI 和 SQLALCHEMY_BINDS 都不是

问题描述

我正在尝试在 Python 中创建一个使用 Postgresql 数据库的 API。我正在尝试一个简单的端点来检查数据库是否可以连接和提取数据。我可能遗漏了一些简单的东西,需要有人指出。下面是我的 main.py 文件

import psycopg2
import model
import os
from flask import Flask, jsonify, request
from flask_sqlalchemy import SQLAlchemy

uname = os.environ['uname']
pas = os.environ['pas']
url = os.environ['url']
port = os.environ['port']
dbase = os.environ['dbase']


app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql+psycopg2://' + uname + ':' + pas + '@' + url + ':' + port + '/' + dbase
db = SQLAlchemy(app)


@app.route('/test')
def test():
    tst = model.Doc.query.filter_by(doc_num=1).first()
    return jsonify(tst)


if __name__ == '__main__':
   app.run()

我还有一个 model.py 文件,我的数据库是在其中建模的。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import Column, Integer, String, Date, ForeignKey
from flask_marshmallow import Marshmallow

app = Flask(__name__)
db = SQLAlchemy(app)
ma = Marshmallow(app)


class Aud(db.Model):
    __tablename__ = 'aud'
    __table_args__ = {'schema': 'cirsx'}
    aud_num = Column(Integer, primary_key=True)
    aud_name = Column(String, nullable=False, unique=True)
    aud_desc = Column(String)


class AudSchema(ma.Schema):
    class Meta:
        fields = ('aud_num', 'aud_name', 'aud_desc')


class DocTyp(db.Model):
    __tablename__ = 'doctyp'
    __table_args__ = {'schema': 'cirsx'}
    doctyp_num = Column(Integer, primary_key=True)
    doctyp_name = Column(String, nullable=False, unique=True)
    doctyp_desc = Column(String)


class DocTypSchema(ma.Schema):
    class Meta:
        fields = ('doctyp_num', 'doctyp_name', 'doctyp_desc')


class Doc(db.Model):
    __tablename__ = 'doc'
    __table_args__ = {'schema': 'cirsx'}
    doc_num = Column(Integer, primary_key=True)
    doctyp_num = Column(Integer, ForeignKey('doctyp_num'))
    aud_num = Column(Integer, ForeignKey('aud_num'))
    doc_path = Column(String, nullable=False)
    title = Column(String, nullable=False)
    author = Column(String)
    keywords = Column(String)
    pub_dt = Column(Date)
    doc_abs = Column(String)
    doc_txt = Column(String)


class DocSchema(ma.Schema):
    class Meta:
        fields = ('doc_num',
                  'doctyp_num',
                  'aud_num',
                  'doc_path',
                  'title',
                  'author',
                  'keywords',
                  'pub_dt',
                  'doc_abs',
                  'doc_txt')


aud_schema = AudSchema()
aud_schemas = AudSchema(many=True)
doctyp_schema = DocTypSchema()
doctyp_schemas = DocTypSchema(many=True)
doc_schema = DocSchema()
doc_schemas = DocSchema(many=True)

if __name__ == '__main__':
    app.run()

为什么我会收到此错误,我有什么遗漏吗?

标签: pythonsqlalchemyflask-sqlalchemy

解决方案


推荐阅读