2013-04-15 26 views
0

我正在使用MySQL和SQLAlchemy。我已經定義,像這樣一類:SQLAlchemy中的我的類有一個總是返回True的布爾型字段

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 

回答

0

顯然,當您使用VarChar(1)作爲布爾字段時,SQLAlchemy不喜歡它。切換到BOOLEAN並重新創建數據庫。有效。

+0

你應該看看使用'Base.metadata.create_all(引擎)'讓SQLAlchemy爲你創建模式 –