[英]store sql result in a variable in python
在執行 select 語句后,我需要幫助將查詢結果存儲在變量中。 這是我下面的代碼。沒有錯誤,但我需要幫助將其存儲在 PYTHON 中的變量中。我正在使用 pymssql 和 python 2.7.9。 提前致謝
conn = pymssql.connect(host='localhost', user='xx', password='xx', database='dbpython')
c = conn.cursor()
row = c.execute("select fid, fname, lname, contact from tblcontact where fname='maiji'")
row = c.fetchall()
while row:
print row
row = c.fetchall()
簡而言之,這就是您正在做的事情。
row = c.ex...
row = c.fe..
row = c.fe...
在編程中,這稱為給變量賦值。 簡而言之,行是容器,您要多次替換它。
我們暫時忽略優化,只忽略 go 的基礎知識。
conn = pymssql.connect(host='localhost', user='xx', password='xx', database='dbpython')
c = conn.cursor()
row = c.execute("select fid, fname, lname, contact from tblcontact where fname='maiji'")
rows = c.fetchall()
for row in rows:
print(row)
首先, c.fetchall()
從您的查詢中檢索所有結果,我們將把它們放在一個名為rows
的變量中。 然后我們通過執行for row in rows
創建一個迭代器(你試圖用 while 循環做的事情)。 然后我們簡單地打印每一行。
這稱為上下文管理器。
with pymssql.connect(host='localhost', user='xx', password='xx', database='dbpython') as conn:
c = conn.cursor()
rows = c.execute("select fid, fname, lname, contact from tblcontact where fname='maiji'")
for row in c.fetchall():
print(row)
這將打開一個名為conn
的上下文句柄,它會在您完成代碼時自動關閉連接(不留下任何打開的連接,這可能是一個問題),其次,直接迭代c.fetchall()
的代碼更少,如果可能會更快function 支持迭代,它可能會在以后的版本中支持。
在這里,您只需將所有結果添加到一個 hughe 字符串中(例如,用於轉儲到文件等)。 請注意,如果結果很多,這可能會填滿您的 memory,在這種情況下將其順序存儲到文件中會更好,因此您通常出於 memory 的原因單獨處理每個數據庫行。
with pymssql.connect(host='localhost', user='xx', password='xx', database='dbpython') as conn:
c = conn.cursor()
rows = c.execute("select fid, fname, lname, contact from tblcontact where fname='maiji'")
string_result = ''
for row in c.fetchall():
string_result = row + '\n'
您應該使用迭代器而不是 while 循環。
conn = pymssql.connect(host='localhost', user='xx', password='xx', database='dbpython')
c = conn.cursor()
c.execute("select fid, fname, lname, contact from tblcontact where fname='maiji'")
for row in c:
print(row)
c.close()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.