簡體   English   中英

Python反復查詢mysql

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM