我想提取特定列,并使用MySQLdb从记录中对它们进行分组。我写了以下代码:
import _mysql
cdb=_mysql.connect(host="myhost",user="root",
passwd="******",db="my_db")
qry = "select col1,col2,col3,col4,col5,col6 from mytable"
cdb.query(qry)
resultset = cdb.store_result()
records = resultset.fetch_row(0,1) # 0 - no limit, 1 - output is in dictionary form
我想从记录中仅提取3列:col1,col3和col4,并希望使用这三列创建唯一值组,即(col1,col3,col4)的所有唯一组合。我知道我必须使用set()数据类型来查找唯一值,我尝试使用它,但我没有找到任何成功。让我知道什么是它的好解决方案。
我在数据库中有数千条记录。我按以下方式获取记录的输出:
({
'col1':'data11',
'col2':'data11',
'col3':'data13',
'col4':'data14',
'col5':'data15',
'col6':'data16'
},
{
'col1':'data21',
'col2':'data21',
'col3':'data23',
'col4':'data24',
'col5':'data25',
'col6':'data26'
})
答案 0 :(得分:1)
我已经提出了这个解决方案:
def filter_unique(records, columns):
unique = set(tuple(rec[col] for col in columns) for rec in records)
return [dict(zip(columns, items)) for items in unique]
它首先为每个记录生成一个列值元组,然后使用set()删除非唯一的出现,然后通过为元组中的每个值赋予名称来重构字典。
这样称呼:
filtered_records = filter_unique(records, ['col1','col2','col3'])
免责声明:我自己是初学者,所以我的解决方案可能不是最好的或最优化的。