Flask SqlAlchemy MySql Boolean类型始终返回Tru

2024-10-01 07:10:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个使用SqlAlchemy连接到MySql数据库的Flask应用程序。该表有3个布尔(位)字段,如下所示:

+------------------------+---------------+------+-----+-------------------+----------------+
| Field                  | Type          | Null | Key | Default           | 
Extra          |
+------------------------+---------------+------+-----+-------------------+----------------+
| ID                     | int(11)       | NO   | PRI | NULL              | 
auto_increment |
| clientID               | int(11)       | YES  |     | NULL              |                
|
| accountType            | varchar(2)    | YES  |     | NULL              |                
|
| systemType             | varchar(1)    | YES  |     | NULL              |                
|
| clientName             | varchar(400)  | YES  |     | NULL              |                
|
| clientURL              | varchar(5000) | YES  |     | NULL              |                
|
| clientTelephone        | varchar(300)  | YES  |     | NULL              |                
|
| clientAddressLine1     | varchar(500)  | YES  |     | NULL              |                
|
| clientAddressLine2     | varchar(500)  | YES  |     | NULL              |                
|
| clientAddressLine3     | varchar(500)  | YES  |     | NULL              |                
|
| clientPostcode         | varchar(50)   | YES  |     | NULL              |                
|
| clientCountry          | varchar(100)  | YES  |     | NULL              |                
|
| accessBenchmarking     | bit(1)        | YES  |     | NULL              |                
|
| accessTechnicalSupport | bit(1)        | YES  |     | NULL              |                
|
| accountLive            | bit(1)        | YES  |     | NULL              |                
|
| clientTown             | varchar(100)  | YES  |     | NULL              |                
|
| clientCounty           | varchar(100)  | YES  |     | NULL              |                
|
| dateTimeStamp          | timestamp     | YES  |     | CURRENT_TIMESTAMP |                
|
+------------------------+---------------+------+-----+-------------------+----------------+

每个位字段的值都设置为0。在

SqlAlchemy模型是:

^{pr2}$

检索值的代码如下:

#check for valid and live user account
CheckAccount = ClientAccounts.query.filter_by(
clientID=accountNo,
).first()
if not CheckAccount is None:

    accessBenchmarking = CheckAccount.accessBenchmarking
    accessTechnicalSupport = CheckAccount.accessTechnicalSupport
    accountLive = CheckAccount.accountLive

print 'db return ...'

print accessBenchmarking
print accessTechnicalSupport
print accountLive

这些值总是返回为True,即使它们在DB中设置为False。返回的价值可以在这里看到:

INFO:sqlalchemy.engine.base.Engine:('11111111', 1)
db return ...
True
True
True

有人知道是什么引起的吗?在


Tags: truedbreturnsqlalchemybitnullyesint
1条回答
网友
1楼 · 发布于 2024-10-01 07:10:23

我想办法解决这个问题。将每个boolean字段的字段数据类型从bit改为tinyint就达到了这个目的。我还是不明白为什么bit不能与SqlAlchemy一起工作。可能是我使用的MySql Python版本?在

相关问题 更多 >