X DevAPI 用户指南  / 第 8 章语句执行  /  8.1 交易处理

8.1 交易处理

事务可用于将操作分组到一个原子单元中。事务的所有操作要么在提交时成功,要么都不成功。只要尚未提交,就可以回滚事务。

可以使用 startTransaction()方法在会话中启动事务,提交 commitTransaction()并取消或回滚rollbackTransaction()。这在以下示例中进行了说明。该示例假定 test模式存在并且集合 my_collection不存在。

from mysqlsh import mysqlx

# Connect to server
mySession = mysqlx.get_session( {
        'host': 'localhost', 'port': 33060,
        'user': 'user', 'password': 'password' } )

# Get the Schema test
myDb = mySession.get_schema('test')

# Create a new collection
myColl = myDb.create_collection('my_collection')

# Start a transaction
mySession.start_transaction()
try:
    myColl.add({'name': 'Rohit', 'age': 18, 'height': 1.76}).execute()
    myColl.add({'name': 'Misaki', 'age': 24, 'height': 1.65}).execute()
    myColl.add({'name': 'Leon', 'age': 39, 'height': 1.9}).execute()
    # Commit the transaction if everything went well
    mySession.commit()
    print('Data inserted successfully.')
except Exception as err:
    # Rollback the transaction in case of an error
    mySession.rollback()

    # Printing the error message
    print('Data could not be inserted: %s' % str(err))