如何在程序使用python运行时从数据库获取新数据而不刷新程序

2024-04-23 17:39:14 发布

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

我想在程序运行时从我的数据库中提取新添加的数据,而不使用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()

Tags: nameidfordataconnectoremailmysqlusername
1条回答
网友
1楼 · 发布于 2024-04-23 17:39:14

如果表中有timestamp列(如果没有,则应添加一列),则可以将其保存到变量中,并获取在该时间点之后添加的数据。你知道吗

假设在第一次取货之前,您的表中有以下内容

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\u at)保存在一个变量中,我们称之为max\u loaded\u 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'

相关问题 更多 >