首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python和MSSQL:从SQL检索数据时的过滤技术

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

Stack Overflow用户
提问于 2019-01-03 13:49:14
回答 2查看 397关注 0票数 0

我有一个MS SQL表,如下所示

代码语言:javascript
运行
复制
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轻松完成此操作

代码语言:javascript
运行
复制
SELECT Device ID, Timestamp, Avg_PF, THDV_Sum 
FROM mytable
WHERE Timestamp >= '2018-10-01'

现在,我正在尝试使用以下方法在python上执行相同的操作

代码语言:javascript
运行
复制
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中使用的类似过滤器的东西。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-03 14:43:37

我会这样做:

代码语言:javascript
运行
复制
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)
票数 2
EN

Stack Overflow用户

发布于 2019-01-03 14:16:07

如下所示使用read_sql_query函数的parse_dates参数:

代码语言:javascript
运行
复制
df_select = pd.read_sql_query(sql, conn, parse_dates=['Timestamp'])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54016965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档