pymysql 操作 直接插入数据库 有什么办法 得到该记录的 id 并赋值给 tp_id ?

2019-10-13 23:38:09 +08:00
 python30
pymysql 操作 直接插入数据库

xxx.py 文件里

sql = 'INSERT INTO xxx (`a_id`, `title`, `body`) VALUES (%s, %s, %s)'

value = (tttt, tttt, tttt,)

conn.execute(sql, value)

这一句如果想得到 面上面插入数据的 ID

用下面三句

tp_id =conn.execute('select LAST_INSERT_ID();')
tp_id = conn.execute('select max(id) from xxx;')
tp_id = conn.execute('select @@identity')

上面三个语句 都是返回 执行成功的行数 也就是说 tp_id 的结果是 1 或者 0

那有什么办法 得到该记录的 id 并赋值给 tp_id ?
用 conn.lastrowid 可以。
但是不知道用 上面三条语句中的方法怎么得出这个 ID 并赋值给 tp_id ?

谢谢
3044 次点击
所在节点    Python
7 条回复
rogwan
2019-10-14 00:19:32 +08:00
自增 ID 不好处理,如果是非自增 ID,插入记录之前记录下来就好了。
renmu
2019-10-14 00:27:37 +08:00
conn.insert_id() 这个试试
liuguichao
2019-10-14 09:23:19 +08:00
result_proxy = self.execute(sql, args)
id = result_proxy.lastrowid
meowoo
2019-10-14 10:59:22 +08:00
直接用 cursor.lastrowid 就行了
meowoo
2019-10-14 11:01:02 +08:00
你后面写的那三个,不都是对数据库做查询么,直接解析查询结果就好了啊
python30
2019-10-14 13:25:31 +08:00
@meowoo
现在就是直接用的 tp_id = cursor.lastrowid

第一个 insert into xxxx 后

第二个 现在可以用: 'INSERT INTO aaa (`a_id`, `body`) VALUES (LAST_INSERT_ID(), 'bbbbbb')'

但是我后面还想再跟 一个 'INSERT INTO bbb (`b_id`, `body`) 这个 b_id 也是用的第一个 insert into xxxx 后的记录 id

但是第三个再用 LAST_INSERT_ID() 的话,得到的就是第二个 插入表的 记录 id 了

说的有点混乱。
实在不行就暂时先用 tp_id = cursor.lastrowid 这个吧
meowoo
2019-10-15 15:28:20 +08:00
@python30 我觉得你这样过于复杂了吧, 非得这样的话,就需要先查出来,定义一个变量保存呗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/608966

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX