【发布时间】:2013-05-01 09:27:36
【问题描述】:
在之前的程序中,我从 csv 文件中读取数据,如下所示:
AllData = np.genfromtxt(open("PSECSkew.csv", "rb"),
delimiter=',',
dtype=[('CalibrationDate', datetime),('Expiry', datetime), ('B0', float), ('B1', float), ('B2', float), ('ATMAdjustment', float)],
converters={0: ConvertToDate, 1: ConvertToDate})
我现在正在编写一个非常相似的程序,但这次我想获得一个与 AllData 非常相似的数据结构(除了这次浮点数都在一个 csv 字符串中),但来自 SQL Server 而不是 csv文件。最好的方法是什么?
pyodbc 看起来它涉及到大量使用游标,我不熟悉并希望避免。我只想运行查询并以上述结构(或 C# 中的 DataTable)获取数据。
【问题讨论】:
-
您能更具体地说明您需要什么吗?您有两个主要选择:使用 pyodbc 或其他库查询数据库,获取结果集并将其转换为 Python 数据结构;或使用特定于数据库的工具(例如 bcp.exe)将数据导出到平面文件,然后在 Python 中读取文件。目前还不清楚为什么 pyodbc 不适合你,它很容易使用,如果你喜欢 ORM,你可以将它与 sqlalchemy 一起使用。
-
@Pondlife pyodbc 可能非常合适,您能否指出一个示例,说明如何使用它将查询中的数据获取到类似于 genfromtext 一次性创建的数据结构中而不是有一个光标并且必须逐个记录地导航它?我不想采用平面文件的方法。
-
我对 numpy 一无所知,尽管我已经成功地将 pyodbc 和 sqlalchemy 与 SQL Server 一起使用。但是查询总是返回结果集(pyodbc 中的游标),因此如果您想将该结果集放在另一个数据结构中,那么您必须以某种方式对其进行转换。您可能想问一个关于如何实现
numpy.genfromcursor()等价物的问题,也许有更多知识的人可以提供帮助。 -
@Pondlife 谢谢,您能否发布一个小示例,将一般结果集从 pyodbc 转换为任何东西,比如元组数组或其他东西?我敢肯定,我将能够使其适应 numpy 结构。谢谢
-
@Pondlife 实际上我认为这可能是我正在寻找的东西:stackoverflow.com/questions/7061824/… 会试一试
标签: sql-server-2008 python-2.7 numpy genfromtxt