繁体   English   中英

Python和MSSQL:从SQL检索数据时的过滤技术

[英]Python and MSSQL: Filtering techniques while retrieving data from SQL

我有一个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行,以10/15分钟的间隔包含30个设备的数据(即,有30个唯一的设备ID)。 我想检索时间戳记日期> = 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_querysql字符串。 我的问题是如何在sql字符串中添加诸如过滤器之类的过滤器,以便在pd.read_sql_query使用。

我会这样处理:

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)

像这样使用read_sql_query函数的parse_dates参数:

df_select = pd.read_sql_query(sql, conn, parse_dates=['Timestamp'])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM