首页 > 解决方案 > 使用 SELECT 检索数据并单独处理

问题描述

我需要对SELECT一个 SQL Server 表做一个处理,并分别处理我得到的信息。

例如,假设我有这个表名为Table1

我在 python 中执行此 SELECT:

SELECT name, phone, date FROM Table1

在打印中,结果将是:

[['Sara Miller',611111111],['Jane Smith',622222222],['Amanda Laurens',633333333]]

我需要分别处理每一行以及每个姓名和电话号码以发送短信......那么,我如何使用 Python 访问每一个?例如,向号码 611111111 发送短信说

“亲爱的 Sara Miller,明天(20/05/2020)你在诊所预约了”

我使用 API 介绍的 SMS 部分,问题是我无法弄清楚如何处理从 SQL Server 接收到的数据。

我现在的代码是:

conn = pypyodbc.connect("Connection parameters, waorking OK")
cursor = conn.cursor()
cursor.execute('SELECT name, phone, date FROM Table1')
result = cursor.fetchall()
final_result = [list(i) for i in result]
print(final_result)

如果我需要澄清一些事情,请告诉我。

标签: pythonsql-serverselect

解决方案


我还没有真正使用过,pypyodbc所以我不确定cursor.fetchall返回的数据格式是什么,所以我列出了两种应该涵盖这两种情况的方法。

conn = pypyodbc.connect("Connection parameters, waorking OK")
cursor = conn.cursor()
cursor.execute('SELECT name, phone, date FROM Table1')

for row in cursor.fetchall():
    name = row[0]
    phone = row[1]
    date = row[2]
    # do something with these variables

如果返回的结果是一个字典而不是一个列表,那么它变成:

for row in cursor.fetchall():
    name = row['name']
    phone = row['phone']
    date = row['date']
    # do something with these variables

或者正如@DanGuzman 提到的,我们也可以这样做:

for row in cursor.fetchall():
    name = row.name
    phone = row.phone
    date = row.date
    # do something with these variables

推荐阅读