“select last\u insert\u id()处出现语法错误”

zpf6vheq  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(419)

如果我用python运行查询,它会返回语法错误。
但是,如果我用navicat运行这个程序,就可以了。
为什么不在python中运行呢?
sql查询

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

SELECT LAST_INSERT_ID();

错误
1064,u“您的sql语法有错误;在“select last\u insert\u id()”附近,查看与mysql服务器版本对应的手册,以获取正确的语法
[编辑]
创建.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(); 没用。它返回:
typeerror:不是所有参数都在字符串格式化期间转换

7y4bm7vi

7y4bm7vi1#

在连接上执行此操作以获取插入到游标对象上的最后一行id,
你可以用

connection.insert_id()

或者如果您有光标:

cursor.lastrowid

编辑
对于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查询

相关问题