如何使用PyMySQL和Python将列表构造为(键、值)对?

2024-04-19 23:48:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码:

connection = pymysql.connect(...)
try:
    with connection.cursor() as cursor:
       sql = "select cola,colb from ...."
       result = cursor.fetchall()
       How to build a list from the result?
finally:
    connection.close()

查询返回的数据为:

cola   colb
-----------
123    abc
124    abd
140    ghf

colakey

colbvalue

我知道应该是这样的:

list = []
for i in range (0, ????): 
     cola_value = result[0][i].get('cola')
     colb_value = result[1][i].get('colb')
     list.append((cola_value, colb_value))

我想知道什么是正确的语法,如果这是正确的方法? 我希望能够按键搜索列表并按键访问值。你知道吗

我需要2-3个清单,每一个约900000(键,值)对。 在内存中管理它是明智的还是将它写入文件并在磁盘上处理它更好?你知道吗


Tags: 代码fromgetvalueconnectwithresultconnection
2条回答

我没有试过这个,但你应该能够使用列表理解:

list = [(r['cola'], r['colb']) for r in result]

如果您计划按键查找,那么使用字典会更好:

map = {r['cola']: r['colb'] for r in result}

然后,如果要查找与它们的键123对应的值:

value = map[123]

关于保持900000对是否有意义取决于您的硬件资源—可能有更节省内存的方法,但您可能需要安装一些附加的依赖项。你知道吗

可以在中指定cursorclasspymysql.connection连接函数,它将为您提供如下所述的词典列表:

下面是函数调用:

conn = pymysql.connect(db='foo', cursorclass=pymysql.cursors.DictCursor)
cursor = conn.cursor()
cursor.execute("SELECT * FROM bar")
print cursor.fetchall()

下面是光标的输出:

[{u'col2': 'rty', u'col1': 'qwe'}, {u'col2': 'fgh', u'col1': 'asd'}]

相关问题 更多 >