A продолжение от Как удалить таблицу в SQLAlchemy?
Я хочу удалить таблицу User_test
, но при этом я постоянно получаю NameError
Я определил таблицу с помощью класса Python User
.
Хотя я забыл, как я определил его столбцы, поэтому я запускаю следующий User class
и пропускаю определения столбцов
engine = create_engine('postgresql+psycopg2://user:password@localhost/test')
Base = declarative_base(engine)
class User(Base):
__tablename__ = 'User_test'
__table_args__ = {'autoload':True}
Но когда я пытаюсь удалить таблицу User_test (пытаясь выполнить любое изследующие команды):
Base.metadata.drop_all(bind=engine, tables=[User_test.__table__])
Base.metadata.drop_all(tables=User_test)
User_test.drop(engine)
User_test.__table__.drop(engine)
User_test.__table__.drop(self._engine)
Я получаю:
"Nameerror: name "User_test" is not defined"
Хотя, когда я запускаю print(engine.table_names())
в python, я вижу таблицу.
И при запуске print(Base.metadata.tables.keys())
Я вижу включенную таблицу
Я также вижу эту таблицу при запросе базы данных через psql (т. Е. При запуске run \dt
в psql)
Хотя, когда я пытаюсь запустить select для таблицы в psql, т.е. (Select * from User_test);
Я получаю:
"Could not find a relationship with name User_test"
Мои вопросы:
- Почему я получаю NameError при попытке отбросить таблицу в python и какя могу это исправить?
- Почему я не могу выполнить запрос Select для таблицы в psql, когда я ясно ее вижу?
- Нужно ли мне определять класс User со всеми столбцамиимена, вот почему все это происходит?
Спасибо