Как определить положение строки в sql наборе результатов?

Вы должны определить, какой тип исключения вы хотите перехватить. Поэтому напишите except Exception, e: вместо except, e: для общего исключения (оно будет записано в любом случае).

Другая возможность состоит в том, чтобы написать весь код try / кроме этого:

try:
    with open(filepath,'rb') as f:
        con.storbinary('STOR '+ filepath, f)
    logger.info('File successfully uploaded to '+ FTPADDR)
except Exception, e:
    logger.error('Failed to upload to ftp: '+ str(e))

в Python 3.x и современных версиях Python 2.x используют except Exception as e вместо except Exception, e:

try:
    with open(filepath,'rb') as f:
        con.storbinary('STOR '+ filepath, f)
    logger.info('File successfully uploaded to '+ FTPADDR)
except Exception as e:
    logger.error('Failed to upload to ftp: '+ str(e))
10
задан Chris 3 July 2009 в 14:07
поделиться

5 ответов

Предыдущие сообщения верны. Используйте ROW_NUMBER при использовании Microsoft SQL Server 2005 или выше.

Однако ваши теги не указывают, что вы используете MSSQL, поэтому вот решение, которое должно работать в большинстве реализаций СУБД. По сути, используйте коррелированный подзапрос, чтобы определить количество строк в том же наборе, которые меньше текущей строки, на основе значений предложения ORDER внешнего запроса. Примерно так:

SELECT      T1.id,
            T1.[name],
            (SELECT COUNT(*) 
             FROM table T2 
             WHERE T2.[name] < T1.[name]) + 1 AS rowpos
FROM        table T1
ORDER BY    T1.[name]
12
ответ дан 3 December 2019 в 19:34
поделиться

Вы не указываете, какую СУБД вы используете, но если вы используете SQL Server 2005 или выше, вы можете использовать функцию ROW_NUMBER () - например:

SELECT id, name, ROW_NUMBER() OVER (ORDER BY name) AS RowNumber
FROM   MyTable

Затем , чтобы получить заданную строку, вы можете использовать производную таблицу или общее табличное выражение - например, это:

;WITH NumberedRows
AS
(SELECT id, name, ROW_NUMBER() OVER (ORDER BY name) AS RowNumber
FROM    MyTable)
SELECT RowNumber FROM NumberedRows WHERE id = 47

Чтобы отсортировать, «на какой странице» находится запись, вам нужно будет разделить номер строки на количество записей на страницу и округлить до ближайшего целого числа.

4
ответ дан 3 December 2019 в 19:34
поделиться

Assuming SQL 2005, you can use Row_Number

2
ответ дан 3 December 2019 в 19:34
поделиться

использовать номер строки

1
ответ дан 3 December 2019 в 19:34
поделиться

Ответ зависит от того, какую версию SQL вы используете.

Если вы используете MSSQL 2005, вы можете использовать новую аналитическую функцию ROW_NUMBER (), которая генерирует порядковые номера в том порядке, в котором мы определяем в порядке по пункту. Синтаксис функции ROW_NUMBER ():

ROW_NUMBER () OVER (ORDER BY)

или

ROW_NUMBER () OVER (PARTITION BY)

Если вы используете старую версию SQL Server, вы можете создайте временную таблицу со столбцом идентификаторов и выберите из нее результаты.

1
ответ дан 3 December 2019 в 19:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: