Изменение типа данных целого столбца с помощью sqlalchemy - PullRequest
0 голосов
/ 25 марта 2020

У меня есть таблица (sqlite db) со столбцом, как показано ниже:

XO_HOUSE_NUMBER
95.0
10.0
63.0
6.0

Номера домов указаны в десятичных числах, и я хотел бы, чтобы они были в целых числах. Поэтому, когда я произнесу,

session.query(Policies.XO_HOUSE_NUMBER.cast(sql.Integer)).limit(10).all()

, я получу правильный вывод:

[(95,), (10,), (63,), (6,), (55,), (1,), (19,), (1,), (30,), (21,)]

Теперь я хотел бы обновить этот столбец с приведенными значениями. Поэтому я попробовал три аналогичных способа:

1.
session.query(Policies).update({Policies.XO_HOUSE_NUMBER: Policies.XO_HOUSE_NUMBER.cast(sql.Integer)}, synchronize_session=False)
2.
session.execute(update(Policies, values={Policies.XO_HOUSE_NUMBER: Policies.XO_HOUSE_NUMBER.cast(sql.Integer)}))
3. 
session.query(Policies).update(values={'XO_HOUSE_NUMBER': Policies.XO_HOUSE_NUMBER.cast(sql.Integer)}, synchronize_session=False)

каждый раз, получая один и тот же вывод в терминале py

119752

Тогда session.commit() Но значения не обновляются, они остаются в десятичных числах. Я делаю что-то не так, что я могу сделать, чтобы обновить весь столбец недесятичным, то есть целочисленными значениями, используя метод ORM?

1 Ответ

0 голосов
/ 26 марта 2020

Я думаю, что ответ в том, что изменение типов невозможно с помощью SQLAlchemy. SQLAlchemy не может выполнять ALTER команды. Самый простой способ - выполнить команду непосредственно в db

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...