python - 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()
为什么我会收到此错误,我有什么遗漏吗?
解决方案
推荐阅读
- python - 用户名/密码登录系统 - 检查用户名与密码的相关性
- python - 如何检查 2 个 Pandas Series 对象的相等性?
- github - 了解 GitHub 分支 - 使用哪个分支提交到 App Store?
- nginx - Docker swarm - 如何确保服务在更新时正确链接
- javascript - 传单 - 删除/重播覆盖控制框
- python - Tkinter 树视图在 (0,0) 上添加额外空间
- javascript - 使用导入命令时出现意外的令牌错误
- django - 如何在 Q 对象中使用相关名称字段
- xaml - 基本控件(如 Button、TextBlock)是否具有 xaml 文件实现?
- javascript - 使用 canvas.blob 函数面临一些问题