get*_*low 5 python tuples numpy pyodbc
我想根据从 SQL 查询中提取的值创建一个数组或列表。根据研究,我相信我从 SQL 中提取的数据是一个元组。
如何将数据格式化为可以在 python 中使用的列表?
在我当前的代码中,我尝试使用 numpy 命令 np.asarray。我不确定 numpy 数组是否允许日期时间。
import numpy as np
import pyodbc
conn = pyodbc.connect('login')
cursor = conn.cursor()
cursor.execute("SELECT PTIME, PVALUE FROM HISTORY_TABLE WHERE POINT = 'Value' AND PTIME> '2017-04-12' AND PTIME<'2017-04-13' AND HISTTYPE='AVG' AND PERIOD=7200")
sample = cursor.fetchall()
rockin = np.asarray(sample)
print rockin
cursor.close()
conn.close()
Run Code Online (Sandbox Code Playgroud)
我的结果如下所示:
[[datetime.datetime(2017, 4, 12, 0, 0) 232.83]
[datetime.datetime(2017, 4, 12, 2, 0) 131.49]
[datetime.datetime(2017, 4, 12, 4, 0) 36.67]
...,
[datetime.datetime(2017, 4, 12, 18, 0) 82.08]
[datetime.datetime(2017, 4, 12, 20, 0) 368.83]
[datetime.datetime(2017, 4, 12, 22, 0) 435.79]]
Run Code Online (Sandbox Code Playgroud)
根据研究,我相信我从 SQL 中提取的数据是一个元组。
不完全是。pyodbc 的方法不返回元组列表,它返回对象fetchall()
列表:pyodbc.Row
>>> rows = crsr.execute("SELECT 1 AS foo UNION ALL SELECT 2 AS foo").fetchall()
>>> rows
[(1, ), (2, )]
>>> type(rows[0])
<type 'pyodbc.Row'>
Run Code Online (Sandbox Code Playgroud)
可能是np.asarray
不知道如何处理pyodbc.Row
对象。如果您想将每一行转换为实际的元组,您可以使用
>>> rows_as_tuples = [tuple(x) for x in rows]
>>> rows_as_tuples
[(1,), (2,)]
>>> type(rows_as_tuples[0])
<type 'tuple'>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3971 次 |
最近记录: |