我有一个MS SQL表,如下所示
Device ID Timestamp Avg_PF THDV_Sum
863071010842661 2014-01-01 22:05:57 4.0 7.0
865733020495321 2016-08-19 17:20:09 0.0 0.0
865733020495321 2016-08-19 17:20:41 0.0 0.0
865733020495321 2016-08-19 17:20:41 0.0 0.0
有287,533行,包括30个设备的数据(即,有30个唯一的设备ID),间隔为10/15分钟。我想检索TimeStamp date >=2018-10-01的数据。在SSMS (SQL server 2014管理工具)中,我可以使用以下SQL轻松完成此操作
SELECT Device ID, Timestamp, Avg_PF, THDV_Sum
FROM mytable
WHERE Timestamp >= '2018-10-01'
现在,我正在尝试使用以下方法在python上执行相同的操作
conn = pyodbc.connect('details of SQL server')
df_select = pd.read_sql_query(sql,conn)
在这里,我使用上面的SQL语句作为sql
字符串。但是,它从timestamp = 2014-01-01
开始检索整个数据。我想我需要修改pd.read_sql_query
中的sql
字符串。我的问题是如何在sql
字符串中添加可以在pd.read_sql_query
中使用的类似过滤器的东西。
发布于 2019-01-03 14:43:37
我会这样做:
from sqlalchemy import create_engine
%%time -- just to measure
# Parameters
ServerName = "SQLSRV01" -- your input
Database = "Database"
Driver = "driver=SQL Server Native Client 11.0"
# Create the connection
engine = create_engine('mssql+pyodbc://' + ServerName + '/' + Database + "?" + Driver)
df = pd.read_sql_query ("SELECT Device ID, Timestamp, Avg_PF, THDV_Sum
FROM mytable
WHERE Timestamp >= '2018-10-01'"
, engine)
发布于 2019-01-03 14:16:07
如下所示使用read_sql_query函数的parse_dates参数:
df_select = pd.read_sql_query(sql, conn, parse_dates=['Timestamp'])
https://stackoverflow.com/questions/54016965
复制相似问题