Попытка найти последний идентификатор строки вставки; возвращаемое значение зашифровано

Я использую pypyodbc с SQL Server 2016.

Я пытаюсь вставить и получить последний идентификатор, вставленный в базу данных, после примечания другого пользователя, но возвращаемое значение кажется зашифрованным. Есть ли способ его расшифровать?

def executeSQL (command):
    connection = pypyodbc.connect('Driver={SQL Native Client};'
                                    'Server=blah\blah;'
                                    'Database=Impact;'
                                    'uid=Admin;pwd=F$sfgdfgs99')
    cursor=connection.cursor()
    cursor.execute(command)
    id = cursor.execute("SELECT @@IDENTITY")
    connection.commit()
    connection.close()
    return id

sqlexecute = 'INSERT INTO PERSONS([LastName], [FirstName]) VALUES(\''+lastname.encode('utf-8')+'\',\''+firstname.encode('utf-8')+'\');\n'
lastid = executeSQL(sqlexecute)
print lastid

Выход:

<pypyodbc.Cursor instance at 0x000000000B870C88>

person Stephen    schedule 16.05.2017    source источник
comment
Несколько замечаний в дополнение к ответу: вы можете использовать псевдоним @@IDENTITY - на самом деле используйте SCOPE_INDENTITY для большей точности области видимости. Попробуйте: id = cursor.execute("SELECT SCOPE_IDENTITY() AS id") Подробнее о том, почему вы хотите это сделать: blog.sqlauthority.com/2007/03/25/ Я также рекомендую использовать связанные параметры для вашего INSERT: stackoverflow.com/questions/32748982/< /а>   -  person FlipperPA    schedule 17.05.2017


Ответы (1)


Он не зашифрован, он сообщает вам тип объекта, экземпляром которого он является. В данном случае это pypyodbc.Cursor.

Чтобы получить фактические строки, вы делаете id.fetchall(), который возвращает список результатов. Затем вы можете перебрать их, чтобы прочитать содержимое.

person Antimony    schedule 16.05.2017