python mysqlx.Result.get_autoincrement_value()不';行不通

python mysqlx.Result.get_autoincrement_value()不';行不通,python,mysql,python-3.x,mysql-8.0,document-storage,Python,Mysql,Python 3.x,Mysql 8.0,Document Storage,我试图在我的python项目(python 3.8)中使用MySQL 8的文档存储。MySQL连接器python的版本是8.0.20。根据和,在将文档添加到数据库中后,我尝试获取自动增量文档ID。每次执行后,数据都会成功插入数据库,但在调用get_autoincrement_value()后会返回'-1' 我的代码如下所示: try: schema = session.get_schema('my_schema') collection = schema.

我试图在我的python项目(python 3.8)中使用MySQL 8的文档存储。MySQL连接器python的版本是8.0.20。根据和,在将文档添加到数据库中后,我尝试获取自动增量文档ID。每次执行后,数据都会成功插入数据库,但在调用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感兴趣。如果是这种情况,则应改为使用:

在本例中,该方法返回在
add()
操作范围内生成的所有ID的列表

文档可能不够清晰,但是
get\u auto\u increment\u value()。它在NoSQL集合的范围内没有任何意义,因为集合最终只是一个创建的表,如(压缩版本):

这意味着没有任何东西可以“自动递增”


免责声明:我是MySQL X DevAPI Connector for Node.js的首席开发人员

非常感谢您的帮助~非常高兴从MySQL connectors的核心开发人员之一那里得到答案~:)是的,我正在尝试提取文档ID以供其他用途。这是我第一次尝试MySQL文档存储。我会尽量多了解这个用法,以避免这些愚蠢的问题。我已经试过你的建议了,而且效果很好~:)比你还好~
doc_id = collection.add(topic_dict).execute().get_generated_ids()[0]
CREATE TABLE collection (
  `doc` json DEFAULT NULL,
  `_id` varbinary(32),
  PRIMARY KEY (`_id`)
)