2017-10-20 19 views
1

Je souhaite récupérer une plage spécifique de numéros de lignes à partir d'une base de données avec le paquetage python pymssql. J'utilise le code suivant qui ne semble pas fonctionnerpython - Récupérer des lignes entre une série de numérateurs avec python et 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) 

Il montre l'erreur suivante:

(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") 

Qu'est-ce que je fais mal? Ce n'est pas un problème de connexion. Si je sélectionne les 1000 premières lignes, cela fonctionne parfaitement.

Répondre

1

On dirait que vous voulez utiliser la fonction ROW_NUMBER() de fenêtrage, que vous pourriez faire avec une requête similaire à ceci:

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)