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

标签 python mysql database flask rdbms

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

关于python - 如何在程序运行时使用 python 从数据库获取新数据而不刷新我的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55974622/

相关文章:

python - 为 Django 存档页面选择不同的年份和月份

python mysql.connector 在 JOIN 子句中选择具有当前日期的行

mySQL:使用 CASE 在列上进行过滤

python - Django:manage.py 标准命令不起作用

java - 创建实体时数据库表中的空值

python - 网络x : Convert multigraph into simple graph with weighted edges

python - SqlAlchemy:将表导出到新数据库

php - 存储过程、MySQL 和 PHP

mysql - 显示多对多查询的多个值

sql - Oracle SQL : Count a time period when the value was over the threshold