'SELECT LAST_INSERT_ID()'的语法错误



如果我在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(("附近使用的正确语法


[编辑]

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()
[...]

更新

如果我尝试将INSERT作为单个查询,则可以使用。

但是,SELECT LAST_INSERT_ID();不起作用。它返回:

类型错误:并非所有参数在字符串格式化期间转换

通过连接执行此操作以获取在游标对象上插入的最后一行 ID,

您可以使用

connection.insert_id()

或者,如果您有光标:

cursor.lastrowid 

编辑

对于 sqlcellology,您可以使用:

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

您将拥有您的身份证last_id

但是您必须从sql_query中删除SELECT LAST_INSERT_ID();

相关内容

  • 没有找到相关文章