微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQLite 布尔运算符

如何解决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 检索数据时,它确实以字符串 TrueFalse 的形式出现,即使数据是作为 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) 这将显示TrueFalse 字符串。 ret is [{'starttime': '13:11','endtime': '18:19','Weekends': 'True','Weekdays': 'True','setpoint': 444}]

如何将 'Weekends': 'True','Weekdays': 'True' 更改为仅布尔运算符,而不仅仅是字符串 TrueFalse

感谢您提供的任何提示,这里没有太多智慧。

更新

在 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?