如何使用Python读取MySQL单列值转为一维列表而非元组列表
问题解决方案
mysql.connector中cursor.fetchall()的返回值默认是由行元组组成的列表,即使查询单列,每行也会被封装为仅含一个元素的元组,所以你需要自行提取每个元组的第一个元素来得到一维列表。
方案1:列表推导式修改(最小改动)
只需要修改你原有代码中rows的赋值逻辑即可:
import mysql import mysql.connector import pandas as pd conn = mysql.connector.connect(host="localhost", user="root", passwd="Abcd11",database="entry",auth_plugin="mysql_native_password") query= "select ledger from l_db_name" cur=conn.cursor() cur.execute(query) # 遍历每一行元组,取第一个元素组成新列表 rows = [item[0] for item in cur.fetchall()] conn.commit() print(rows)
方案2:借助Pandas直接转换(代码更简洁)
你已经导入了Pandas,可以直接用Pandas的查询接口直接得到目标格式:
import mysql import mysql.connector import pandas as pd conn = mysql.connector.connect(host="localhost", user="root", passwd="Abcd11",database="entry",auth_plugin="mysql_native_password") query= "select ledger from l_db_name" df = pd.read_sql(query, conn) rows = df['ledger'].tolist() conn.commit() print(rows)
两种方案运行后输出的都是你需要的一维列表格式:['Repair and Maintenance - General', 'Advance salary', 'EXIM Deposit', 'Office Cleaning Expenses']
内容的提问来源于stack exchange,提问作者Govind Lekhak
相关产品推荐
相关产品推荐

