синтаксическая ошибка в «SELECT LAST_INSERT_ID ()» - PullRequest
0 голосов
/ 30 июня 2018

Если я запускаю свой запрос в python, он возвращает синтаксическую ошибку.

Однако, если я запускаю это с помощью navicat, все будет хорошо.

Почему он не работает в Python?

sql_query

INSERT INTO
    solarsystem
    (
        solarsystemName,
        solarsystemPositionX,
        solarsystemPositionY,
        solarsystemSectorId,
        solarsystemAngle
    ) 
VALUES 
    ('Lima [698/562]',698,562,13,171);

SELECT LAST_INSERT_ID();

ошибка

1064, u "У вас есть ошибка в синтаксисе SQL; проверьте правильность синтаксиса в руководстве, соответствующем версии вашего сервера MySQL, рядом с 'SELECT LAST_INSERT_ID ()'


[EDIT]

create.py

[...]

args = (solarsytem['solarsystemName'], solarsytem['x_pos'], solarsytem['y_pos'],
        solarsytem['sector_id'], solarsytem['angle'])

with self.engine.begin() as connection:
    result_proxy = connection.execute(sql_query, args).first()

[...]

UPDATE

Если я попробую INSERT как отдельный запрос, это сработает.

Однако SELECT LAST_INSERT_ID(); не сработало. Возвращает:

TypeError: не все аргументы преобразованы во время форматирования строки

1 Ответ

0 голосов
/ 30 июня 2018

Сделайте это через ваше соединение, чтобы получить последний идентификатор строки, вставленный в объект курсора,

Вы можете использовать

connection.insert_id()

Или, если у вас есть курсор:

cursor.lastrowid 

EDIT

Для sqlalchemy вы можете использовать:

with self.engine.begin() as connection:
        result_proxy = connection.execute(sql_query, args).first()
        last_id=result_proxy.inserted_primary_key[0]

И у вас будет свой идентификатор в last_id

Но вы должны удалить SELECT LAST_INSERT_ID(); из вашего sql_query

...