2017-10-20 135 views
1

我想使用python包pymssql从数据库获取特定范围的行数。我使用下面的代码似乎并不工作python - 使用python和pymssql获取一系列rownumbers之间的行

# connection details to SQL 
con = pymssql.connect("some connection credentials") 

df = pd.read_sql("""SELECT 
      [col1], 
      [col2], 
      WHERE rownum 
      BETWEEN 0 AND 1000""", 
      con = con) 

它显示了以下错误:

(207, "Invalid column name 'rownum'.DB-Lib error message 20018, severity 
16:\nGeneral SQL Server error: Check messages from the SQL Server\nDB-Lib 
error message 20018, severity 16:\nGeneral SQL Server error: Check 
messages from the SQL Server\n") 

我在做什么错?这不是一个连接问题,如果我选择前1000行,它的工作完美无瑕。

回答

1

看起来你要使用的ROW_NUMBER()窗口函数,你可以用类似下面的查询做:

sql = """\ 
SELECT [id], [txtcol] 
FROM 
    (
     SELECT [id], [txtcol], ROW_NUMBER() OVER (ORDER BY id) AS [rownum] 
     FROM test10k 
    ) AS subquery 
WHERE [rownum] BETWEEN 2 AND 4 
""" 
crsr.execute(sql)