如何用 PyMySQL 和 Python 构造一个列表作为(键,值)对?
How to construct a list as (key,value) pairs with PyMySQL and 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()
查询returns数据为:
cola colb
-----------
123 abc
124 abd
140 ghf
cola
是 key
colb
是 value
我知道它应该是这样的:
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 个(键,值)对。
在内存中管理它还是将它写入文件并在磁盘上处理更好?
我没试过,但你应该可以使用列表理解:
list = [(r['cola'], r['colb']) for r in result]
如果您打算按键查找,使用字典会更好:
map = {r['cola']: r['colb'] for r in result}
然后如果你想找到与他们键对应的值 123
:
value = map[123]
关于保存 900,000 对是否有意义取决于您的硬件资源 - 可能有更节省内存的方法来做到这一点,但您可能需要安装一些额外的依赖项。
您可以在 pymysql.connection 函数中指定 cursorclass,它将为您提供字典列表,如下所示:
函数调用如下:
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'}]
我有以下代码:
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()
查询returns数据为:
cola colb
-----------
123 abc
124 abd
140 ghf
cola
是 key
colb
是 value
我知道它应该是这样的:
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 个(键,值)对。 在内存中管理它还是将它写入文件并在磁盘上处理更好?
我没试过,但你应该可以使用列表理解:
list = [(r['cola'], r['colb']) for r in result]
如果您打算按键查找,使用字典会更好:
map = {r['cola']: r['colb'] for r in result}
然后如果你想找到与他们键对应的值 123
:
value = map[123]
关于保存 900,000 对是否有意义取决于您的硬件资源 - 可能有更节省内存的方法来做到这一点,但您可能需要安装一些额外的依赖项。
您可以在 pymysql.connection 函数中指定 cursorclass,它将为您提供字典列表,如下所示:
函数调用如下:
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'}]