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