如果我在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();