【发布时间】:2018-12-09 07:15:54
【问题描述】:
如果我在 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:字符串格式化期间并非所有参数都转换
【问题讨论】:
-
帮助我们帮助你 - 也分享你的 python 代码
-
您是否尝试过通过两个单独的
execute调用来执行这两个语句? -
是的,如果我运行
SELECT LAST_INSERT_ID() FROM solarsystem ;它会返回 TypeError: not all arguments convert during string formatting(我在没有 args 的情况下运行它)但在 Navicat 中它总是有效的
标签: python mysql python-2.7 sqlalchemy navicat