繁体   English   中英

使用Flask,python和postgresql如何连接到预先存在的数据库?

[英]using Flask, python and postgresql how can I connect to a pre-existing database?

我想连接到一个预先存在的postgres数据库,该数据库在我的应用程序中没有与之关联的模型。 也许不出所料,这是一个麻烦的补充,这是我第一次使用Python和Flask。

app / py代码是:

import os
from flask import Flask
from flask import render_template
from flask.ext.sqlalchemy import SQLAlchemy  
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgres://blah:blah@ec2-54-227-254-13.compute-1.amazonaws.com:5432/mydb'
db = SQLAlchemy(app)
db.create_all()
db.session.commit()

@app.route("/")
def main():
    return render_template('index.html')


@app.route('/base')
def base():
    myusers = users.all()
    return render_template('base.html')

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

def main()的工作原理使我取得了很多成就。

在视图(base.html)中我们有:

{% for user in myusers %}
    <div><p>{{ user.first_name }} </b></p></div>
    {% endfor %}

当我转到base.html页面时,持久性错误是NameError: global name 'users' is not defined

在很多事情上,我做错了什么呢? 所有帮助赞赏。 谢谢。

您需要对现有数据库进行反向工程以生成SQLAlchemy可以使用的python模型。

sqlacodegen可以为你做,使用pip - pip install sqlacodegen安装它

在命令提示符下,您可以使用以下命令生成模型:

sqlacodegen --outfile c:/temp/models.py postgres://blah:blah@ec2-54-227-254-13.compute-1.amazonaws.com:5432/mydb

将生成的models.py文件复制到项目文件夹中,不要忘记导入所需的模型类,例如User类。

检查models.py文件以查看表如何转换为类,尤其是生成的类名称的大小 - 例如“User”或“user”。

假设在models.py中生成的用户类称为“User”,则需要将“myusers”变量传递给模板:

@app.route('/base')
def base():
    myusers = db.session.query(User).all()
    return render_template('base.html', myusers=myusers)

不要忘记在app.py文件的顶部导入用户模型(您需要检查由sqlacodgen生成的用户类的名称):

from models import User

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM