Когда я набираю: db.session.commit ()
Это ошибка, которую я получаю.
Traceback (последний вызов последний): File "C: \ Users \ shrut \ postgres - flask -graphql \ env \ lib \ site-packages \ sqlalchemy \ engine \ base.py ", строка 1277, в _execute_context self.dialect.do_execute (File" C: \ Users \ shrut \ postgres - flask -graphql \ env \ lib \ site-packages \ sqlalchemy \ engine \ default.py ", строка 593, в do_execute cursor.execute (оператор, параметры) psycopg2.errors.UndefinedTable: отношения "пользователи" не существует СТРОКА 1: INSERT INTO users (имя пользователя, электронная почта) VALUES ('postgres', 'shr ... ^
Вышеупомянутое исключение явилось прямой причиной следующего исключения:
Traceback (последний вызов последним): файл "", строка 1, в файле "C: \ Users \ shrut \ postgres - flask -graphql \ env \ lib \ site-packages \ sqlalchemy \ orm \ scoping.py ", строка 163, при этом return getattr (self.registry (), name) (* args, ** kwargs) File" C: \ Users \ shrut \ postgres - flask -graphql \ env \ lib \ site-packages \ sqlalchemy \ orm \ session.py ", l ine 1042, в файле commit self.transaction.commit () "C: \ Users \ shrut \ postgres - flask -graphql \ env \ lib \ site-packages \ sqlalchemy \ orm \ session.py", строка 504, в коммите self._prepare_impl () File "C: \ Users \ shrut \ postgres - flask -graphql \ env \ lib \ site-packages \ sqlalchemy \ orm \ session.py", строка 483 , в файле _prepare_impl self.session.flu sh () "C: \ Users \ shrut \ postgres - flask -graphql \ env \ lib \ site-packages \ sqlalchemy \ orm \ session.py" , строка 2523, на удалении self._flu sh (объекты) Файл "C: \ Users \ shrut \ postgres - flask -graphql \ env \ lib \ site-packages \ sqlalchemy \ orm \ session. py ", строка 2664, в flush transaction.rollback ( capture_exception = True) File" C: \ Users \ shrut \ postgres - flask -graphql \ env \ lib \ site-packages \ sqlalchemy \ util \ langhelpers.py ", строка 68, в exit compat.raise (Файл" C: \ Users \ shrut \ postgres - flask -graphql \ env \ lib \ site-packages \ sqlalchemy \ util \ compat.py ", строка 178, в строке повышения файл исключения повышения" C: \ Users \ shrut \ postgres - flask -graphql \ env \ lib \ site-packages \ sqlalchemy \ orm \ session.py ", строка 2624, в файле _flush flush_context.execute ()" C: \ Users \ shrut \ postgres - flask -graphql \ env \ lib \ site- пакеты \ sqlalchemy \ orm \ unitofwork.py ", строка 422, при выполнении re c .execute (self) File" C: \ Users \ shrut \ postgres - flask -graphql \ env \ lib \ site-packages \ sqlalchemy \ orm \ unitofwork.py ", строка 586, в execute persistence.save_obj (Файл" C: \ Users \ shrut \ postgres - flask -graphql \ env \ lib \ site-packages \ sqlalchemy \ orm \ persistence.py ", строка 239, в save_obj _emit_insert_statements (Файл" C: \ Users \ shrut \ postgres - flask -graphql \ env \ lib \ site-packages \ sqlalchemy \ orm \ persistence.py ", строка 1135, в _emit_insert_statements result = cached_connections [connection] .execute (Файл" C: \ Users \ shrut \ postgres - flask -graphql \ env \ lib \ site-packages \ sqlalchemy \ engine \ base.py ", строка 1014, при выполнении return meth (self, multiparams, params) File" C: \ Users \ shrut \ postgres - flask -graphql \ env \ lib \ site-packages \ sqlalchemy \ sql \ elements.py ", строка 298, в _execute_on_con nection return connection._execute_clauseelement (self, multiparams, params) Файл "C: \ Users \ shrut \ postgres - flask -graphql \ env \ lib \ site-packages \ sqlalchemy \ engine \ base.py", строка 1127, в _execute_clauseelement ret = self._execute_context (Файл "C: \ Users \ shrut \ postgres - flask -graphql \ env \ lib \ site-packages \ sqlalchemy \ engine \ base.py", строка 1317, в _execute_context self. handle_dbapi_exception (Файл "C: \ Users \ shrut \ postgres - flask -graphql \ env \ lib \ site-packages \ sqlalchemy \ engine \ base.py", строка 1511, в handle_dbapi_exception util.raise (Файл "C: \ Users \ shrut \ postgres - flask -graphql \ env \ lib \ site-packages \ sqlalchemy \ util \ compat.py ", строка 178, в строке повышения исключение файла повышения" C: \ Users \ shrut \ postgres - flask -graphql \ env \ lib \ site-packages \ sqlalchemy \ engine \ base.py ", строка 1277 в _execute_context self.dialect. do_execute (Файл "C: \ Users \ shrut \ postgres - flask -graphql \ env \ lib \ site-packages \ sqlalchemy \ engine \ default.py", строка 593, в do_execute cursor.execute (инструкция , параметры) sqlalchemy.ex c .ProgrammingError: (psycopg2.errors.UndefinedTable) отношение «пользователи» не существует СТРОКА 1: ВСТАВИТЬ пользователей (имя пользователя, адрес электронной почты) VALUES ('postgres', 'shr ... ^
[SQL: ВСТАВИТЬ пользователей (имя пользователя, электронная почта) ЗНАЧЕНИЯ (% (имя пользователя) s,% (электронная почта) s) ВОЗВРАЩЕНИЕ users.id] [параметры: {'имя пользователя': 'postgres ',' email ':' shruti1.malik. ramaswamy@gmail.com '}] (Справочная информация об этой ошибке: http://sqlalche.me/e/13/f405)
Мой код app.py:
# Imports
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import graphene
from graphene_sqlalchemy import SQLAlchemyObjectType, SQLAlchemyConnectionField
from flask_graphql import GraphQLView
# initializing our app
app = Flask(__name__)
app.debug = True
# Configs
# Replace the user, password, hostname and database according to your configuration information
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://postgres:omega123@localhost:5432/book-store-api'
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
# Modules
db = SQLAlchemy(app)
# Models
class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, index=True)
email = db.Column(db.String(120), unique=True, nullable=False)
books = db.relationship('Book', backref='author')
def __init__(self, username, email):
self.username = username
self.email = email
def __repr__(self):
return '<User %r>' % self.id
class Book(db.Model):
__tablename__ = 'books'
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(256), index=True, nullable=False)
description = db.Column(db.Text, nullable=False)
year = db.Column(db.Integer, nullable=False)
author_id = db.Column(db.Integer, db.ForeignKey('users.id'))
def __repr__(self):
return '<Book %r>' % self.title % self.description % self.year % self.author_id
# Schema Objects
class BookObject(SQLAlchemyObjectType):
class Meta:
model = Book
interfaces = (graphene.relay.Node, )
class UserObject(SQLAlchemyObjectType):
class Meta:
model = User
interfaces = (graphene.relay.Node, )
class Query(graphene.ObjectType):
node = graphene.relay.Node.Field()
all_books = SQLAlchemyConnectionField(BookObject)
all_users = SQLAlchemyConnectionField(UserObject)
schema = graphene.Schema(query=Query)
class AddBook(graphene.Mutation):
class Arguments:
title = graphene.String(required=True)
description = graphene.String(required=True)
year = graphene.Int(required=True)
username = graphene.String(required=True)
book = graphene.Field(lambda: BookObject)
def mutate(self, info, title, description, year, username):
user = User.query.filter_by(username=username).first()
book = Book(title=title, description=description, year=year)
if user is not None:
book.author = user
db.session.add(book)
db.session.commit()
return AddBook(book=book)
class Mutation(graphene.ObjectType):
add_book = AddBook.Field()
schema = graphene.Schema(query=Query, mutation=Mutation)
# Routes
app.add_url_rule(
'/graphql-api',
view_func=GraphQLView.as_view(
'graphql',
schema=schema,
graphiql=True # for having the GraphiQL interface
)
)
@app.route('/')
def index():
return 'Welcome to Book Store Api'
if __name__ == '__main__':
app.run()
Мои python команды для создания базы данных:
>>> from app import db, User, Book
>>> postgres = User(username='postgresuser', email='shruti1.malik.ramaswamy@gmail.com')
>>> db.session.add(postgres)
>>> db.session.commit()
>>> flaskbook = Book()
>>> flaskbook.title = "Building with Flask"
>>> flaskbook.description = "The best Flask Python book on the web"
>>> flaskbook.year = 2020
>>> flaskbook.author_id = postgresisscary.id
>>> db.session.add(flaskbook)
>>> db.session.commit()
if error: >>> db.session.rollback()