[英]Extract data from sql in python (one time per second)
如何從 python 中的 sql 中提取數據? 我有這段代碼,但它重復了所有不是我想要的值。 我希望在我的 python 中有新的更新 sql 數據。幾天來我幾乎被擊中了..任何善良的靈魂請我使用 sqlserver2012, python
import time
sql_conn = connectSQLServer('ODBC Driver 13 for SQL Server', 'DESKTOP-K6A10IO\SQLEXPRESS', 'display')
mycursor = sql_conn.cursor()
a = 0
while True:
try:
time.sleep(1)
a=a+1
print(a)
sql = "SELECT * FROM dbo.LiveStatsFromSQLServer"
mycursor.execute(sql)
myresult = mycursor.fetchall()
for x in myresult:
print(x)
except Exception as error:
print("Nothing in database\n")
print(error)
sql_conn.commit()
The result shown is
1
(1625, 3)
(1626, 0)
(1627, 10)
2
(1625, 3)
(1626, 0)
(1627, 10)
3
(1625, 3)
(1626, 0)
(1627, 10)
(1622, 20)
while i wish to have a constantly updating to the end of the list like:
(1625, 3)
(1626, 0)
(1627, 10)
after 1 second
(1622, 20)
after 1 second
(1612, 10)
如果我沒理解錯的話,您只想查看新記錄(自上次查詢以來添加的記錄)。 您需要在應用程序中添加一些邏輯。
您的表可能已經有一個自動遞增的 ID(或者某種時間戳也可以)。 每次查詢后,您需要記住您獲得的最大值,並且后續查詢應包含一個WHERE
子句(即WHERE ID > nnnnn
),以便您只會獲得 ID大於上一次查詢的最大值的記錄。
或者,您可以使用日期時間值,但這可能不太准確(除非您不介意某些重疊)。
此查詢僅返回所有內容。
PS:我不知道為什么你的異常處理塊中有一個提交。 你在這里沒有做任何交易,你也沒有向數據庫寫入任何數據。 不使用變量a
。
如果編輯表架構不是一個選項,則可以通過以下行接近您想要的內容......
for row in cursor.execute("""SELECT num,id ,row_number() partition by (select 1) FROM dbo.LiveStatsFromSQLServer"""):
編輯
看到您可以更改架構,在您正在查詢的表中添加一個日期編輯列。
for row in cursor.execute("""SELECT num,id FROM dbo.LiveStatsFromSQLServer where datetime> dateadd(s,-1,getdate())"""):
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.