使用pyodbc使用唯一日期作为参考来从2个表中获取数据



我有一个包含2个表的MS访问数据库;第一个包含行显示" DD/MM/YYY"," HH:MM"," PRISE"的行,每行显示了下一个增量分钟的数据。基本上,股票指数的盘中分钟数据。

第二个表包含以下数据;例如," DD/mm/yyy","收盘价","波动性" - 以" 15.55"格式的波动性定价。每行显示下一个增量日的信息。

因此,第一张桌子在几分钟内上升,第二个桌子在几天内增加。

我想根据日期从第二个表中从第二个表中取出数据并将其引用到第一个表。这样我就可以得到包含的数据: " DD/MM/YY"," HH:MM","价格","收盘价","波动性"。

"收盘价"one_answers"波动性"值,然后希望重复自己直到第二天的会议记录,然后他们将更新以显示第二天的价值。

我是编程的新手,到目前为止已经设法进行了以下操作。我可以单独拉下每个查询(并打印它们,以便我知道我得到的)。

我知道下面的输出在日期之后包含额外的" 00:00:00" - 不是100%确定如何摆脱它 - 而且我认为这并不重要,因为日期仍然应该是能够被引用。(一次一个问题!;))

从表中输出看起来像这样:

2005-01-03 00:00:00  17:00  1213.25
2005-01-03 00:00:00  17:01  1213.25
2005-01-03 00:00:00  17:02  1213.75
2005-01-03 00:00:00  17:03  1213.75

表2的输出看起来像这样:

2005-01-03 00:00:00  1206.25  14.08
2005-01-04 00:00:00  1191.00  13.98
2005-01-05 00:00:00  1183.25  14.09
2005-01-06 00:00:00  1188.25  13.58

这是我到目前为止的代码:

from math import sqrt
import time
import pyodbc
"""establishes connection to the database and creates "cursors" with which to query data"""
ACCESS_DATABASE_FILE = "C:\Python27\Lib\site-packages\xy\Apache         Python\SandP.accdb"
ODBC_CONN_STR = 'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=%s;' % ACCESS_DATABASE_FILE
cnxn = pyodbc.connect(ODBC_CONN_STR)
cursor1 = cnxn.cursor()
cursor2 = cnxn.cursor()

"""uses cursor1 to pull out distinct rows of data, ordered by distinct date/time"""
cursor1.execute("select distinct [Intraday_values].[Date_], Time_, Close from [Intraday_values] order by [Intraday_values].[Date_]")
row1 = cursor1.fetchall()
for row1 in row1:
print row1[0], row1[1], row1[2]
time.sleep(2)
"""uses cursor2 to pull out settlement prices and volatility data and order by distinct date"""
cursor2.execute("select distinct [Closing_prices].[Date_], Last_price, Volatility from [Closing_prices] order by [Closing_prices].[Date_]")
row2 = cursor2.fetchall()
for row2 in row2:
print row2[0], row2[1], row2[2]
time.sleep(2)

任何帮助或建议都将不胜感激,可能只会让我免于将其余的头发拉出……

在我看来,您应该能够通过连接两个表的单个查询来做到这一点

cursor1.execute(
    "select distinct iv.[Date_], iv.Time_, iv.Close, cp.Last_price, cp.Volatility " +
    "from [Intraday_values] AS iv INNER JOIN [Closing_prices] AS cp" +
    "    ON cp.[Date_] = iv.[Date_] " +
    "order by iv.[Date_], iv.Time_")
row1 = cursor1.fetchall()
for row1 in row1:
    print row1[0], row1[1], row1[2], row1[3], row1[4]

相关内容

  • 没有找到相关文章

最新更新