如何解决SQLite 布尔运算符
在 aiohttp 中,我将数据插入 sqlite,其中 True 或 False 条件为 1 或 0,就像我在 sqlite 文档中读到的那样,这是布尔值的最佳实践:
[Date,post["starttime"],post["endtime"],1,post["setpoint"]]
例如,从初级开发人员的角度来看,这在这里似乎工作正常:
elif weekdays:
info = f'Weekdays Found'
print(info)
response_obj = { 'status' : 'success','info' : info }
await db.execute(
"INSERT INTO posts (Date,starttime,endtime,Weekends,Weekdays,setpoint) VALUES(?,?,?)",[Date,post["setpoint"]],)
await db.commit()
return web.json_response(response_obj)
当我从 sqlite 检索数据时,它确实以字符串 True
或 False
的形式出现,即使数据是作为 0 或 1 插入的。
例如,这是我从 sqlite 检索数据的 aiohttp 路由,其中很可能有更好的方法来编写如何检索插入到数据库中的最后一行数据:
@routes.get('/event-payload')
async def get_event_payload(request):
ret = []
db = request.config_dict["DB"]
async with db.execute("SELECT * FROM posts ORDER BY rowid DESC LIMIT 1;") as cursor:
async for row in cursor:
ret.append(
` {
"starttime": row["starttime"],"endtime": row["endtime"],"Weekends": row["Weekends"],"Weekdays": row["Weekdays"],"setpoint": row["setpoint"],}
)
但是如果我 print("ret is",ret)
这将显示为 True
或 False
字符串。
ret is [{'starttime': '13:11','endtime': '18:19','Weekends': 'True','Weekdays': 'True','setpoint': 444}]
如何将 'Weekends': 'True','Weekdays': 'True'
更改为仅布尔运算符,而不仅仅是字符串 True
或 False
?
感谢您提供的任何提示,这里没有太多智慧。
更新
在 aiohttp 这就是我创建 sqlite 数据库的方式
def try_make_db() -> None:
my_path = 'form_data.db'
with sqlite3.connect(my_path) as conn:
cur = conn.cursor()
print("Trying to connect to the db!")
try:
cur.execute("SELECT 1 FROM posts LIMIT 1;")
cur.close()
print("Good enough DB should be Ok")
except Exception as e:
print("Table 'posts' does not exist")
cur.execute(
"""CREATE TABLE posts (
Date TEXT PRIMARY KEY,starttime TEXT,endtime TEXT,Weekends NUMBER,Weekdays NUMBER,setpoint NUMBER)
"""
)
print("DB TABLE CREATED")
conn.commit()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。