Python 迭代查询 mysql
Python querying mysql iteratively
我有一个要从 mysql 数据库中提取的列名列表。每次循环并查询是一种很好的做法吗?
当我这样做时,sometimes/randomly 它似乎挂起;当我重新启动脚本时,它会在不同的迭代中挂起。在我继续尝试破译问题所在之前,我想知道这是否是首先要做的不好的做法。
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
一次查询一个单独的列非常奇怪,因为您无法将一列中的值与另一列相关联。除非你的 table 是一堆不相关的数据(不是真正的记录,即你的 table 根本没有规范化)这将从数据中删除所有意义。如果您正在尝试处理动态或可变列,您可以构建一个动态查询字符串(附加列名、逗号、列名、逗号...),然后执行该查询。我很难想到查询单个列而不是 rows/records 有用的场景。
试试这样的东西...未测试:
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)
你应该试试这个,它只会得到你需要的列,每一列都在一行中,只有一个 select:
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 like
SELECT `COLa`, `COLb`, `COLc` FROM `table_name`;
然后执行一次,得到values
变量
中的数据
我有一个要从 mysql 数据库中提取的列名列表。每次循环并查询是一种很好的做法吗?
当我这样做时,sometimes/randomly 它似乎挂起;当我重新启动脚本时,它会在不同的迭代中挂起。在我继续尝试破译问题所在之前,我想知道这是否是首先要做的不好的做法。
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
一次查询一个单独的列非常奇怪,因为您无法将一列中的值与另一列相关联。除非你的 table 是一堆不相关的数据(不是真正的记录,即你的 table 根本没有规范化)这将从数据中删除所有意义。如果您正在尝试处理动态或可变列,您可以构建一个动态查询字符串(附加列名、逗号、列名、逗号...),然后执行该查询。我很难想到查询单个列而不是 rows/records 有用的场景。
试试这样的东西...未测试:
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)
你应该试试这个,它只会得到你需要的列,每一列都在一行中,只有一个 select:
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 like
SELECT `COLa`, `COLb`, `COLc` FROM `table_name`;
然后执行一次,得到values
变量