在Python/sqlite3中是否可以使用空列表执行for循环

2024-09-30 10:28:08 发布

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

我希望用户能够更新数据库中的值,但我希望即使数据库中还不存在记录,也能以同样的方式运行。所以我想结合插入和更新。我正在考虑对数据库中的记录执行for循环,以查看该记录是否存在,然后执行if语句以决定是否应该插入或更新。我想除了第一次,每次都可以。如果数据库中不存在任何记录,这似乎不起作用,我想这是因为当数据库为空时,i=none

例如:

        conn = sqlite3.connect("database.db")
        c = conn.cursor()
        c.execute("SELECT *, oid FROM database")
        schemalaggning = c.fetchall()
        conn.commit()
        conn.close()
        for i in schemalaggning:
            if clicked1.get() and clicked2.get() and clicked10.get() in i:
                   myUPDATEfunction()
            else:
                   myINSERTfunction2()

How can i solve this problem?


My specific code:
        conn = sqlite3.connect("schemalaggning.db")
        c = conn.cursor()
        c.execute("SELECT *, oid FROM schemalaggning")
        schemalaggning = c.fetchall()
        conn.commit()
        conn.close()


        for i in schemalaggning:
            if clicked1.get() and clicked2.get() and clicked10.get() in i:
                conn = sqlite3.connect("schemalaggning.db")
                c = conn.cursor()
                c.execute("""UPDATE schemalaggning SET
                    namn = :namn,
                    ar = :ar,
                    vecka = :vecka,
                    mandag = :mandag,
                    tisdag = :tisdag,
                    onsdag = :onsdag,
                    torsdag = :torsdag,
                    fredag = :fredag,
                    lordag = :lordag,
                    sondag = :sondag
                    
                    WHERE oid = :oid""",
                    {
                    "namn": clicked10.get(),
                    "ar": clicked1.get(),
                    "vecka": clicked2.get(),
                    "mandag": clicked3.get(),
                    "tisdag": clicked4.get(),
                    "onsdag": clicked5.get(),
                    "torsdag": clicked6.get(),
                    "fredag": clicked7.get(),
                    "lordag": clicked8.get(),
                    "sondag": clicked9.get(),
                    "oid": i[10]


                    })
                conn.commit()
                conn.close()
            else:
                pass
                conn = sqlite3.connect("schemalaggning.db")
                c = conn.cursor()
                c.execute("INSERT INTO schemalaggning VALUES (:namn, :ar, :vecka, :mandag, :tisdag, :onsdag, :torsdag, :fredag, :lordag, :sondag)",
                          {
                              
                              "namn": clicked10.get(),
                              "ar": clicked1.get(),
                              "vecka": clicked2.get(),
                              "mandag": clicked3.get(),
                              "tisdag": clicked4.get(),
                              "onsdag": clicked5.get(),
                              "torsdag": clicked6.get(),
                              "fredag": clicked7.get(),
                              "lordag": clicked8.get(),
                              "sondag": clicked9.get()

                          }
                          )
                conn.commit()
                conn.close()

Tags: 数据库getconnaroidnamnfredagmandag

热门问题