Настройка Flask-SQLAlchemy

Пытаюсь настроить Flask и SQLAlchemy в Windows, но столкнулся с проблемами.

Я использовал Flask-SQLAlchemy вместе с PostgreSQL 9.1.4 (32-разрядная версия) и пакетом Psycopg2. Вот соответствующие фрагменты кода, я создал базовую модель пользователя, чтобы проверить, что моя БД подключается и фиксируется.

Три бита кода будут взяты из файла __init__.py моего приложения, файла models.py и моего файла settings.py.

Когда я пытаюсь открыть интерактивную подсказку и пробую код по следующей ссылке, я получаю исключение ProgrammingError (подробности в ссылке).

Что может быть причиной этого? Я следил за документацией, и я просто запутался в том, что я делаю неправильно, особенно учитывая, что я также использовал Django с psycopg2 и PostgreSQL в Windows.


person wldcordeiro    schedule 23.06.2012    source источник
comment
Кажется, схема не создана. Сначала вам нужно создать БД и назначить логин для БД в postgresql; тогда вы сможете создавать таблицы.   -  person Burhan Khalid    schedule 23.06.2012


Ответы (3)



На момент выполнения create_all класс models.py еще не был импортирован, поэтому класс не объявлен. Таким образом, create_all не создает никакой таблицы.

Чтобы решить эту проблему, импортируйте models перед запуском create_all или, что еще лучше, не отделяйте объект db от объявления модели.

person madjar    schedule 26.06.2012

Простые шаги для использования Flask SQLAlchemy:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

//employee.db database will get created in current python project

app.config['SQLALCHEMY_DATABASE_URI']='sqlite:///employee.db'

db = SQLAlchemy(app)

class Employee(db.Model):
    id = db.Column(db.Integer,primary_key=True)
    name = db.Column(db.String(20))
    dept = db.Column(db.String(40))

Чтобы протестировать этот код, вам нужно запустить оболочку Python.

ЗАПУСК В ОБОЛОЧКЕ ПИТОНА:

//This is going to create table create_all() method
from one_to_many import db
db.create_all()

//This is going to insert data into table
from one_to_many import Employee
new_emp = Employee(name="Viraj",dept="IT")
db.session.add(new_emp)
db.session.commit()

//To check or retrieve data use this 
show_all_data = Employee.query.all()
for i in show_all_data:
    print(i.id,i.name,i.dept)
person Viraj Wadate    schedule 25.11.2018