Я поддерживаю некоторый код, который манипулирует БД Microsoft SQL Server с Python через панд, поддерживаемых sqlalchemy / pyodbc.
Код вставляет строку, вызывая data_frame.to_sql('table_name', sqlalchemy_engine)
в кадре данных, содержащем одну строку.Затем он выполняет другой запрос, используя значения столбца в data_frame
в предложении WHERE
, чтобы извлечь автоматически сгенерированный первичный ключ из только что вставленной строки.
Должен быть более элегантный способ.Я мог бы выполнить engine.execute("SELECT scope_identity();")
на движке sqlalchemy (но так как ядро может создавать соединение по требованию, я обязательно получу тот же экземпляр соединения, который использовался для вставки?) Если бы я выполнял необработанный запрос SQL, я мог бы включитькоманда OUTPUT
в запросе, но не похоже, что панды это элегантно поддерживают.
Я что-то упустил или это какой-то хакерский путь, который уже есть в коде, лучший способ достичь этого?