Отображение базы данных Python на веб-сервере Flask - PullRequest
0 голосов
/ 02 марта 2019

Я работаю над проектом, который требует, чтобы я создал базу данных, импортировал в нее данные и отобразил ее на локальном сервере FLASK.Я создал базу данных, но я не уверен, что мне нужно сделать, чтобы отобразить ее таблицы на сервере.Я настроил отображение информации через HTML через render_template и считаю, что установил соединение через config.py, но я не уверен, куда идти дальше.Я прочитал следующие руководства, но я не совсем понимаю их.Если бы кто-нибудь мог помочь, я был бы признателен.

http://flask.pocoo.org/docs/0.12/patterns/sqlalchemy/ http://flask -sqlalchemy.pocoo.org / 2.3 / config /

Ниже приведенысоответствующие файлы в корне проекта.

/project
    config.py
    database_insert.py
    server.py
    /app
        /templates
            index.html
        __init__.py
        models.py
        routes.py

config.py

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

class Config(object):
    SECRET_KEY = 'you-will-never-guess'
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////project/app.db'
    SQLALCHEMY_TRACK_MODIFICATIONS = False

init .py

from flask import Flask, request, render_template
from config import Config
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate

app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app)
migrate = Migrate(app, db)

from app import routes, models

models.py

from app import db

class Lot(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(64), index=True)
    spots = db.relationship('Spot', backref='author', lazy='dynamic')

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

class Spot(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    availability = db.Column(db.String(140))
    spot_num = db.Column(db.String(140))
    lot_id = db.Column(db.Integer, db.ForeignKey('lot.id'))

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

rout.py

from app import app
from flask import Flask, request, render_template

@app.route('/')
@app.route('/index')
def index():
    lot_details = {
        'id': 'TEST_ID', #placeholder for testing purposes
        'title': 'TEST_TITLE' #placeholder for testing purposes
    }
    return render_template('index.html', lot=lot_details)

index.html

<!DOCTYPE html>
<html>
    <head>
        <title>test</title>
    </head>
    <body>
        <p>Hello, World!</p>
        <p>{{lot.id}}</p>
        <p>{{lot.title}}</p>
    </body>

1 Ответ

0 голосов
/ 02 марта 2019

Сначала определите вспомогательный метод в вашем Spot классе модели.

class Spot(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    availability = db.Column(db.String(140))
    spot_num = db.Column(db.String(140))
    lot_id = db.Column(db.Integer, db.ForeignKey('lot.id'))

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

    def dump(self):
        return dict(id=self.id, title=self.title)

Затем в маршруте фляги вы можете запросить:

@app.route('/')
@app.route('/index')
def index():
    lot_details = Lot.query.first().dump() # query first item
    return render_template('index.html', lot=lot_details)
...