8.1.1处理警告

与单个语句的执行类似,事务的提交或回滚也会触发警告。的应答结果对象处理这些警告Session.commit ();Session.rollback ();需要检查一下。

这在下面的示例中显示。该示例假设测试模式存在,并且集合my_collection不存在。

从mysqlsh导入mysqlx #连接到服务器mySession = mysqlx。Get_session ({'host': 'localhost', 'port': 33060, 'user': 'user', 'password': '密码'}) #获取模式测试myDb = mySession.get_schema('test') #创建一个新的集合myColl = myDb.create_collection('my_collection') #启动一个事务myssession .start_transaction()尝试:myColl. myColl。添加({“名称”:“罗希特”,“年龄”:18岁的“高度”:1.76}). execute () myColl。添加({“名称”:“岬”,“年龄”:24日,“身高”:1.65}). execute () myColl。add({'name': 'Leon', 'age': 39, 'height': 1.9}).execute() #提交事务如果一切正常reply = myssession . Commit() #处理警告如果回复。warning_count:用于result.get_warnings(): print('Type [%s] (Code %s): %s\n' %(警告。水平,警告。除了Exception as err: #在出现错误的情况下回滚事务reply = myssession . Rollback() #处理警告如果回复。warning_count:用于result.get_warnings(): print('Type [%s] (Code %s): %s\n' %(警告。水平,警告。#打印错误消息print('数据无法插入:%s' % str(err))

默认情况下,所有警告都是从服务器发送到客户机的。如果已知某个操作会生成许多警告,而这些警告对应用程序没有价值,则可以抑制发送警告。这有助于节省带宽。session.setFetchWarnings ()控制警告是在服务器上丢弃还是发送到客户端。session.getFetchWarnings ()用于学习当前活动的设置。

from mysqlsh import mysqlx def process_warnings(result): if result.get_warnings_count(): for warning in result.get_warnings(): print('Type [%s] (Code %s): %s\n' % (warning.)水平,警告。else: print("No warnings were returned.\n") #连接到服务器mySession = mysqlx. code)Get_session ({'host': 'localhost', 'port': 33060, 'user': 'user', 'password': '密码'});#禁用产生myssession .set_fetch_warnings(False) result = myssession .set_fetch_warnings(False)Sql('如果不存在就删除模式').execute() process_warnings(result)# Enables warning generation mySession.set_fetch_warnings(True) result = mySession.sql('drop schema if exists unexisting').execute() process_warnings(result)