flask sql модель алхимии (автозагрузка) не получает все столбцы в таблице - PullRequest
1 голос
/ 01 мая 2020

Я создаю приложение flask поверх уже существующей базы данных, поэтому не было необходимости объявлять все модели целиком. У меня есть эта таблица:

class Users(db.Model):
__tablename__ = 'my_users'
__table_args__ = {
    'autoload': True,
    'autoload_with': db.engine
}

таблица имеет около 10 столбцов, но когда я запрашиваю данные, я вижу, что атрибут:

.__dict__ 

возвращает только первые 4 столбца. Я пытался использовать фильтр, а также фильтр, но возвращенные данные содержат только первые 4 столбца. Вот мой запрос:

users = Users.query.filter(
    section_serial == sectionserial
).all()

Я использую базу данных postgres. Вот минимальный пример:

  CREATE TABLE public.my_users
  (
  user_serial integer NOT NULL DEFAULT nextval('my_users_seq'::regclass),
  user_name character varying(16) NOT NULL,
  user_password character varying(42) NOT NULL,
  id_number character varying(155) NOT NULL,
  date_added timestamp without time zone NOT NULL DEFAULT now(),
  is_enabled boolean NOT NULL DEFAULT true,
  expiry_date date NOT NULL DEFAULT (('now'::text)::date + 30),
  phone_number character varying(254),
  notes text,
  section_serial integer,
  full_name character varying(155) NOT NULL,
  zip_code boolean NOT NULL DEFAULT false,
  CONSTRAINT user_serial_pkey PRIMARY KEY (user_serial)
 );

После запроса данных я получаю только user_serial, user_name, user_password и id_number. Я не могу получить остальные столбцы

1 Ответ

1 голос
/ 01 мая 2020

Проблема была в том, что она конфликтовала с моделью входа в систему, которую я создал, хотя с другим именем. Я думаю, что модели должны быть объявлены один раз.

class SystemUsers(db.Model):
       __tablename__ = 'my_users'
userserial = db.Column(
    'user_serial', db.Integer, primary_key=True)
username = db.Column('user_name ', db.String)
password= db.Column('user_password ', db.String)
idnumber = db.Column('id_number', db.String)
isactive = True
isanonymous = False
authenticated = False
...