SQLAlchemy, MySQL и python - как мне обращаться с логическим значением?

У меня есть приложение Pyramid, которое я использую с SQLAlchemy и MySQL. Для полей базы данных, которые я хотел бы считать логическими, я использовал тип данных "BIT" на стороне SQLAlchemy и BIT(1) на стороне MySQL.

Все это работало нормально, но я проверял какой-то недавно обновленный код на своем веб-хосте, и их версия phpMyAdmin новее, чем та, которую я использую локально; Я просматривал таблицу с полем BIT, и на более новом phpMyAdmin эти данные не отображаются - они просто пустые. В моем локальном экземпляре BIT-поля отображаются как 0 или 1. Если я попытаюсь встроить в себя редактирование размещенного phpMyAdmin, оно не будет принимать никаких значений, которые я пробовал. Я попробовал свой код приложения, и он, кажется, мог переключать значения true/false просто отлично.

Меня удивило - с этой настройкой я должен подходить к этому по-другому? SQLAlchemy поддерживает Boolean, который выглядит более интуитивно понятным и уместным. Стоит ли мне использовать это и установить вместо полей MySQL значение TINYINT?

Каков общепринятый способ обработки логических значений между SQLAlchemy и MySQL?

1 ответ

Решение

MySQL имеет BOOL тип (который использует SQLAlchemy), поэтому я не уверен, почему вы не используете это? Видимо это псевдоним для TINYINT,

from sqlalchemy import Boolean и тебе должно быть хорошо идти.

Другие вопросы по тегам