Flask-SQLAlchemy не создает таблицу - PullRequest
0 голосов
/ 12 апреля 2019

Я пытаюсь использовать PostgreSQL с Flask-SQLAlchemy.Я создал базу данных с именем data_collector, используя pgAdmin4.Когда я пытаюсь создать таблицу, она не создается.Я думаю, что соединение с базой данных не устанавливается.

Я пытаюсь запустить его из cmd как:

from app import db
db.create_all()
from flask import Flask, render_template,request
from flask_sqlalchemy import SQLAlchemy

app=Flask(__name__)
app.config['SQLALCHEMY DATABASE_URI'] = 'postgresql://postgres:postgresql@localhost/data_collector'

db=SQLAlchemy(app)

class Data(db.Model):
    __tablename__="data"
    id=db.Column(db.Integer,primary_key=True)
    email_=db.Column(db.String(120),unique=True)
    height_=db.Column(db.Integer)

    def __init__(self,email_,height_):
        self.email_=email_
        self.height_=height_

db.create_all()

1 Ответ

0 голосов
/ 12 апреля 2019

Вы не зафиксировали базу данных после создания таблиц.
Вы можете сделать это с помощью:

with app.app_context():
    db.create_all()
    db.session.commit()

Сделайте что-то подобное.

from flask_sqlalchemy import SQLAlchemy
from flask import Flask


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

# ---snip---

with app.app_context():
    db.create_all()
    db.session.commit()    # <- Here commit changes to database


@app.route("/")
def index():
    return "Hello, World!"

Это должнорешить вашу проблему.

Если вы хотите сбросить (удалить) свою базу данных, то:

with app.app_context():
    db.drop_all()
    db.session.commit()

Ничего не записывается, не удаляется и не обновляется в базе данных, если вы не совершите коммит, используя
db.session.commit()

Если вы хотите отменить изменения, прежде чем приступить к использованию: db.session.rollback()

...