【问题标题】:Creating database via flask in postgreSQL在 postgreSQL 中通过烧瓶创建数据库
【发布时间】:2019-10-07 02:06:21
【问题描述】:

我正在尝试一个教程,使用 json 与烧瓶和 postgreSQL 数据库建立数据库连接。

这是models.py中的代码行

from app import db
from sqlalchemy.dialects.postgresql import JSON

class Result(db.Model):
    _tablename_= 'results'

    id =db.Column(db.Integer, primary_key=True)
    url = db.Column(db.String())
    result_all = db.Column(JSON)
    result_no_stop_words = db.Column(JSON)

    def __init__(self, url, result_all, result_no_stop_words):
        self.url = url
        self.result_all = result_all
        self.result_no_stop_words = result_no_stop_words

    def __repr__(self):
        return '<id {}>'.format(self.id)

config.py 中的代码

import os
basedir = os.path.abspath(os.path.dirname(__file__))

class Config(object):
    DEBUG = False
    TESTING = False
    CSRF_ENABLED = True
    SECRET_KEY = 'this-really-needs-to-be-changed'
    SQLALCHEMY_DATABASE_URI = os.environ['postgresql://postgresql:bat123@localhost/DatabaseFirst']

class ProductionConfig(Config):
    DEBUG = False

class StagingConfig(Config):
    DEVELOPMENT = True
    DEBUG = True

class DevelopmentConfig(Config):
    DEVELOPMENT = True
    DEBUG = True

class TestingConfig(Config):
    TESTING = True

manage.py 中的代码

import os
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand

from app import app, db

app.config.from_object(os.environ['APP_SETTINGS'])

migrate = Migrate(app, db)
manager = Manager(app)

manager.add_command('db', MigrateCommand)

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

app.py 中的代码

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
import os

app = Flask(__name__)
app.config.from_object(os.environ['APP_SETTINGS'])
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)

from models import Result

@app.route('/')
def hello():
    return "Hello World!"

@app.route('/<name>')
def hello_name(name):
    return "Hello {}!".format(name)


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

在运行此代码行之前,我想知道是否应该在 postgreSQL 中创建数据库,单独使用表和列,
或者这些代码行在 postgreSQL 中创建表和列

class Result(db.Model):
    _tablename_= 'results'

    id =db.Column(db.Integer, primary_key=True)
    url = db.Column(db.String())
    result_all = db.Column(JSON)
    result_no_stop_words = db.Column(JSON)

基本上我想知道上述代码行的功能或目的。(5行代码)

【问题讨论】:

  • 如果这两个东西在教程中没有解释,你可能想尝试另一个。

标签: python postgresql flask flask-sqlalchemy


【解决方案1】:

manager.add_command('db', MigrateCommand) 这篇文章添加了一个名为db 的命令,以便您可以运行flask db 这将创建表和列。

注意:要使用此命令,首先需要在环境变量中定义FLASK_APP

例如:

export FLASK_APP=app.py
flask db

还有型号

class Result(db.Model): _tablename_= 'results' id =db.Column(db.Integer, primary_key=True) url = db.Column(db.String()) result_all = db.Column(JSON) result_no_stop_words = db.Column(JSON)

这定义了表的类表示。它不会在数据库中创建表,它只是表示。 MigrationCommand 负责在数据库中创建表。

【讨论】:

    【解决方案2】:
    class Result(db.Model):
        __tablename__ = 'results'
    
        id =db.Column(db.Integer, primary_key=True)
    

    class Result(db.Model)

    此代码行在 Flask 应用程序的前端创建 Result 的类实例,并将这些值传递给数据库 postgreSQL 或您将使用的任何相应数据库。

    __tablename__ = 'results'

    在我的例子中,我们在数据库中创建了一个名为 results 的表 DatabaseFirst

    id = db.Column(db.Integer, primary_key=True)

    这里我们在results的表中创建了一个名为id的列,它只能保存整数类型的数据,并且id列被分配了结果表的主键。

    这里通过我上面提到的3行代码,数据库表和列是通过Flask应用程序创建的,我们可以在postgreSQL数据库上看到各自的结果。

    【讨论】:

      猜你喜欢
      • 2014-06-15
      • 1970-01-01
      • 1970-01-01
      • 2016-09-20
      • 1970-01-01
      • 2020-10-15
      • 1970-01-01
      • 1970-01-01
      • 2013-01-29
      相关资源
      最近更新 更多