簡體   English   中英

python mysqlx.Result.get_autoincrement_value() 不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM