自己封装了一个 psycopg2 的 execute 方法:
def execute(self, sql, params=None):
cursor.execute(sql, params)
# return
# return cursor.rowcount
return cursor.fetchone()[0] # return last_insert_row_id !!!
这样就能使用类似这样的 insert in () values () returning id
的 SQL 语句来返回刚刚插入数据的 ID
然后问题就来了,要是 update 数据的时候没有写 returning id
这样的有返回的句子,那么断然会报 ProgrammingError: no results to fetch
然而这个 execute 是 insert update delete 都会用到的啊,难道要 insert 搞一个 insert method ? update 单独来个 update method ?这样?
很不优美好不好!
想想我大 MySQL ,那个简单.....
有使用 Postgres 的同学遇到这么蛋疼的问题不?来分享一下,谢谢!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.