代码之家  ›  专栏  ›  技术社区  ›  Bas Hofstra

python-使用python和pymssql获取一系列行号之间的行

  •  1
  • Bas Hofstra  · 技术社区  · 8 年前

    我想使用python包pymssql从数据库中获取特定范围的行号。我正在使用以下代码,但似乎不起作用

    # 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 回复  |  直到 8 年前
        1
  •  1
  •   Gord Thompson    8 年前

    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)