簡體   English   中英

如何在程序運行時使用python從數據庫中獲取新數據而不刷新我的程序

[英]How I fetch new data from database while the program is running using python without refresh my program

我想在程序運行時從我的數據庫中獲取新添加的數據而不使用python刷新程序...我該怎么做?

import mysql.connector

mydb = mysql.connector.connect(
    host ="localhost",
    user = "root",
    password = "",
    database = "databasename"
)

mycursor = mydb.cursor()

def fetchdata():
        mycursor.execute("SELECT * FROM tablename")
        myresult = mycursor.fetchall()
        for data in myresult:
            u_id = data[0]
            username = data[1]
            email = data[2]
            password = data[3]
            print(f"{u_id},{username},{email},{password}")

if __name__ == '__main__':
    while True: # for fetching data again again and again
        fetchdata()

如果表中有時間戳列(如果不是,則應添加一個),可以將其保存到變量並獲取在該時間點之后添加的數據。

讓我們說,在您第一次獲取之前,您在表中有以下內容

id, username, email, password, loaded_at
1, user1, 123@mail.com, ***, 2019-05-03 11:12:12
2, user2, 456@mail.com, ***, 2019-05-03 11:14:34
3, user3, 789@mail.com, ***, 2019-05-03 11:16:56

在第一次查詢后,將max(loaded_at)保留在變量中,讓我們稱之為max_loaded_at

假設向數據添加了兩個新行

id, username, email, password, loaded_at
4, user4, 124@mail.com, ***, 2019-05-03 11:17:55
5, user5, 457@mail.com, ***, 2019-05-03 11:21:47

在您的代碼中將您的查詢更改為

mycursor.execute(f"SELECT * FROM tablename WHERE loaded_at > '{max_loaded_at}'")

這將為id 4和5提供新行

不要忘記將變量初始化為早於最小日期的時間,例如

max_loaded_at = '2001-01-01'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM