本文介绍了如何使用Python进行数据库查询,并展示了将查询结果存储为列表或元组的具体示例。通过这些例子,读者可以轻松掌握数据处理技巧。
在Python进行数据库查询时通常会使用一些连接库如MySQLdb(适用于MySQL)或pymysql。这些库提供了与数据库交互的方法,包括执行SQL语句、获取查询结果等。
默认情况下,MySQLdb库返回的查询结果是一个包含多个tuple的list,每个tuple代表一行记录,并且tuple中的元素对应于查询结果中的列值。例如,如果你有一个用户表`user`,它有两个字段:`num`和`age`, 查询所有记录可能会得到如下格式的结果:
```python
[(1000L, 0L), (2000L, 0L), (3000L, 0L)]
```
这种返回方式要求通过索引访问数据,如 `result[0][1]` 来获取第一行的第二列值。
为了使查询结果更易于处理,可以将游标设置为字典类型(DictCursor)。这使得查询结果以键-值对形式呈现出来。修改后的代码如下:
```python
import MySQLdb
from MySQLdb.cursors import DictCursor
# 连接数据库并创建一个使用字典类型的游标的连接对象。
db = MySQLdb.connect(host=localhost, user=root, passwd=123456, db=test, cursorclass=DictCursor)
cur = db.cursor()
cur.execute(SELECT * FROM user)
rs = cur.fetchall()
# 现在可以通过列名直接访问数据,如 rs[0][age]。
print(rs) # 输出类似 { num: 1000L, age: 0L }, { num: 2000L, age: 0L }等字典形式的数据
```
对于pymysql来说使用方法相似:
```python
import pymysql
db = pymysql.connect(localhost, root, 123456, test)
cursor = db.cursor(pymysql.cursors.DictCursor)
# 查询并获取所有结果。
sql = SELECT * FROM tablelist WHERE id>%s
cursor.execute(sql, [4])
result = cursor.fetchall()
print(result)
```
在上面的pymysql示例中,我们使用了DictCursor来使查询返回字典形式的结果。此外还展示了如何执行参数化查询,并且展示了一种遍历tuple类型的查询结果的方法:
```python
# 对((6, engineeringdata20180901, 1535731200),)类型数据的提取。
for i in range(len(result)):
id_list.append(result[i][0])
tablename_list.append(result[i][1])
tabletime_lsit.append(result[i][2])
print(id_list)
print(tabletime_lsit)
```
通过这种方式,你可以更方便地处理和操作查询结果。特别是在列名较多或含义清晰时使用字典形式的数据会更加直观和高效。在实际应用中可以根据需求选择合适的方式存储和处理数据库的查询结果。