gpt4 book ai didi

python - Flask SqlAlchemy MySql bool 类型总是返回 True

转载 作者:行者123 更新时间:2023-11-28 23:09:47 24 4
gpt4 key购买 nike

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

+------------------------+---------------+------+-----+-------------------+----------------+
| 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 模型是:

class ClientAccounts(db.Model):
id = db.Column(db.Integer, primary_key=True)
clientID = db.Column(db.Integer)
accountType = db.Column(db.Text(2))
systemType = db.Column(db.Text(1))
clientName = db.Column(db.Text(400))
clientURL = db.Column(db.Text(5000))
clientTelephone = db.Column(db.Text(300))
clientAddressLine1 = db.Column(db.Text(500))
clientAddressLine2 = db.Column(db.Text(500))
clientAddressLine3 = db.Column(db.Text(500))
clientPostcode = db.Column(db.Text(50))
clientCountry = db.Column(db.Text(100))
accessBenchmarking = db.Column(db.Boolean)
accessTechnicalSupport = db.Column(db.Boolean)
accountLive = db.Column(db.Boolean)
clientTown = db.Column(db.Text(100))
clientCounty = db.Column(db.Text(100))

检索值的代码在这里:

#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,即使它们在数据库中设置为 False。返回的值可以在这里看到:

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

有人知道是什么原因造成的吗?

最佳答案

我想出了一个解决办法。将每个 bool 字段的字段数据类型从 bit 更改为 tinyint 就可以了。我仍然不明白为什么 bit 不能与 SqlAlchemy 一起使用。也许这是我使用的 MySql Python 的版本?

关于python - Flask SqlAlchemy MySql bool 类型总是返回 True,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46285521/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com