我在SQLAlchemy中的类有一个总是返回True的布尔字段

时间:2013-04-15 22:32:05

标签: python sqlalchemy

我正在使用MySQL和SQLAlchemy。我有一个如此定义的类:

Base = sqlalchemy.ext.declarative.declarative_base()
class process(Base):
    __tablename__ = 'processes'
    process = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True, nullable=False)
    get_javascript = sqlalchemy.Column(sqlalchemy.types.Boolean, nullable=False)

我的架构定义如下:

CREATE TABLE processes
(
  process Mediumint NOT NULL AUTO_INCREMENT,
  get_javascript Varchar(1) NOT NULL,
 PRIMARY KEY (process)
) ENGINE = InnoDB

在我的数据库中,我有以下行:

+---------+----------------+
| process | get_javascript |
+---------+----------------+
|      17 | 0              |
|      18 | 1              |
+---------+----------------+

在Python中查询它们总是让我对get_javascript字段真实。

>>> for i in s.query(db_classes.process).all():
...     print i.process, i.get_javascript
... 
17 True
18 True

1 个答案:

答案 0 :(得分:0)

显然,当您使用VarChar(1)作为布尔字段时,SQLAlchemy不喜欢它。将其切换到BOOLEAN并重新创建数据库。它奏效了。