python - 使用 python 和 pymssql 获取行号范围之间的行
python - Fetching rows in between a range of rownumbers with python and pymssql
我想使用 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 行,它会完美运行。
您似乎想使用 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)
我想使用 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 行,它会完美运行。
您似乎想使用 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)