[英]python mysqlx.Result.get_autoincrement_value() doesn't work
我正在嘗試在我的 python 項目(python 3.8)中使用 MySQL 8 的文檔存儲。 MySQL-connector python 的版本是 8.0.20。 根據API 參考和X DevAPI 用戶指南,我嘗試在將文檔添加到數據庫后獲取自動增量文檔 ID。 每次執行后,數據都會成功插入DB,但調用get_autoincrement_value()后會返回'-1'。
我的代碼如下所示:
try:
schema = session.get_schema('my_schema')
collection = schema.get_collection('my_collection')
topic_dict = protobuf_to_dict(topic)
doc_id = collection.add(topic_dict).execute().get_autoincrement_value()
logger.debug('doc_id: {}', doc_id)
return doc_id
except Exception as e:
logger.exception("failed to add topic to db, topic: {}, err: {}", topic, e)
我的用法有什么問題嗎? 謝謝大家~
似乎您對自動生成的文檔 ID 感興趣。 如果是這種情況,您應該改用get_generated_ids
:
doc_id = collection.add(topic_dict).execute().get_generated_ids()[0]
在這種情況下,該方法返回在add()
操作的 scope 中生成的所有 id 的列表。
文檔可能不夠清楚,但get_auto_increment_value()
僅包含有用數據,如果您在包含AUTO_INCREMENT
列的表上插入帶有session.sql()
或table.insert()
的行。 它在 NoSQL collections 的 scope 中沒有任何意義,因為最終集合只是一個創建的表格,如下所示(精簡版):
CREATE TABLE collection (
`doc` json DEFAULT NULL,
`_id` varbinary(32),
PRIMARY KEY (`_id`)
)
這意味着沒有任何東西可以“自動遞增”。
免責聲明:我是 Node.js 的 MySQL X DevAPI 連接器的主要開發人員
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.