gpt4 book ai didi

python - 使用 pyodbc 使用唯一日期作为引用从 2 个表中提取数据

转载 作者:太空宇宙 更新时间:2023-11-04 06:06:54 24 4
gpt4 key购买 nike

我有一个包含 2 个表的 MS Access 数据库;第一行包含显示“dd/mm/yyy”、“hh:mm”、“price”的行——每行显示下一增量分钟的数据。基本上,股票指数的盘中分钟价格数据。

第二个表包含以下数据; “dd/mm/yyy”、“收盘价”、“波动率”——例如使用“15.55”格式定价的波动率。每个额外的行显示下一个增量日的信息。

所以第一个表的行数在几分钟内增加,第二个表的行数在几天内增加。

我想形成一个 pyodbc 查询,根据日期从第二个表中提取数据并将其引用到第一个表。这样我就可以获得包含以下内容的数据行: “dd/mm/yy”,“hh:mm”,“价格”,“收盘价”,“波动率”。

然后“收盘价”和“波动率”值有望重复出现,直到分钟数进入第二天,然后它们将更新以显示第二天的值。

我对编程完全陌生,到目前为止已经成功完成了以下工作。我可以单独提取每个查询(并打印它们,这样我就知道我得到了什么)。

我知道下面的输出在日期之后包含一个额外的“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)

如有任何帮助或建议,我们将不胜感激,这可能会让我免于拔掉剩下的头发……

最佳答案

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

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]

关于python - 使用 pyodbc 使用唯一日期作为引用从 2 个表中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21461053/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com