如果我在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();
无效。它返回:
TypeError:在字符串格式化期间并非所有参数都已转换
答案 0 :(得分:1)
通过连接进行操作,以获取光标对象上插入的最后一行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
中拥有您的ID
但是您必须从sql_query中删除SELECT LAST_INSERT_ID();