[英]Python querying mysql iteratively
我有要從mysql數據庫中提取的列名列表。 遍歷它並每次查詢都是一種好習慣?
當我這樣做時,有時/隨機地掛起了; 當我重新啟動腳本時,它掛在不同的迭代中。 一直想知道這是否是不好的做法,然后再繼續嘗試解釋問題所在。
import mysql.connector
import numpy as np
cnx = mysql.connector.connect(user='user', password='pw', host='ip_here')
for i,j in enumerate(columnList):
cursor.execute('SELECT `' + j + '` FROM `table_name`')
iValues = cursor.fetchall()
cursor.close
if i == 0:
extractedValues = iValues
else:
extractedValues = np.hstack((extractedValues, iValues))
cnx.close
一次查詢一列很奇怪,因為您將無法將一列中的值與另一列相關聯。 除非您的表是無關數據的抓包(不是真正的記錄,即您的表完全未規范化),否則這將刪除數據中的所有含義。 如果您要處理動態或可變列,則可以構建一個動態查詢字符串(附加列名,逗號,列名,逗號...),然后執行該查詢。 我很難想到要查詢單個列而不是行/記錄的情況。
嘗試這樣的事情...未測試:
cnx = mysql.connector.connect(user='user', password='pw', host='ip_here')
cursor.execute('SELECT * FROM database.`table_name`')
iValues = cursor.fetchall()
cursor.close
cnx.close
#for i,j in enumerate(iValues):
# if i == 0:
# extractedValues = iValues
# else:
# extractedValues = np.hstack(())
extractedValues = list(iValues)
您應該嘗試此操作,它將僅獲取您需要的列,並且每一行在一起且只有一個選擇項:
import mysql.connector
import numpy as np
cnx = mysql.connector.connect(user='user', password='pw', host='ip_here')
cursor.execute('SELECT ' + ['`' + col + '`' for col in columnList].join(',') + ' FROM `table_name`')
values = cursor.fetchall()
# now values variable has the data in the columns you need
無需for
因列表理解的,它會產生一個單一的選擇像
SELECT `COLa`, `COLb`, `COLc` FROM `table_name`;
然后執行一次並獲取values
變量中的數據
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.