mysql_aotucommit_MySQL 事务autocommit自动提交操作
时间: 2023-08-04 14:06:47 浏览: 68
MySQL事务的autocommit属性默认为开启状态,也就是说,每条SQL语句都会被自动提交。如果需要手动控制事务的提交或回滚,可以使用START TRANSACTION语句开启事务,然后使用COMMIT语句提交事务或使用ROLLBACK语句回滚事务。如果想要关闭autocommit属性,可以使用SET AUTOCOMMIT=0语句。
相关问题
mysql_stmt_free_result mysql_errno mysql_close mysql_init mysql_options mysql_real_connect mysql_autocommit mysql_set_character_set mysql_rollback mysql_stmt_close mysql_stmt_errno mysql_stmt_free_result mysql_stmt_bind_param mysql_stmt_bind_result mysql_stmt_execute mysql_stmt_fetch
这函数都与 MySQL 数据库的连接、查询和结果处理有关。下面是每个函数的简要说明:
- mysql_stmt_free_result:释放与语句句柄相关的查询结果。
- mysql_errno:获取最后一次 MySQL 操作的错误码。
- mysql_close:关闭 MySQL 连接。
- mysql_init:初始化 MySQL 连接句柄。
- mysql_options:设置 MySQL 连接选项。
- mysql_real_connect:建立 MySQL 数据库连接。
- mysql_autocommit:设置 MySQL 连接是否自动提交事务。
- mysql_set_character_set:设置 MySQL 连接字符集。
- mysql_rollback:回滚 MySQL 事务。
- mysql_stmt_close:关闭 MySQL 语句句柄。
- mysql_stmt_errno:获取最后一次 MySQL 语句操作的错误码。
- mysql_stmt_bind_param:将变量绑定到 MySQL 语句的参数上。
- mysql_stmt_bind_result:将变量绑定到 MySQL 语句的结果上。
- mysql_stmt_execute:执行 MySQL 语句。
- mysql_stmt_fetch:获取 MySQL 语句的下一行结果。
tornado_mysql事务_tornado_mysql的pool使用事务的方法。
在使用`tornado_mysql`的连接池时,可以使用以下代码来执行事务:
```python
import tornado.ioloop
import tornado.web
import tornado.gen
import tornado_mysql
class MainHandler(tornado.web.RequestHandler):
async def get(self):
db = self.application.db
async with db.pool.acquire() as conn:
async with conn.cursor() as cur:
try:
await cur.execute("START TRANSACTION")
await cur.execute("INSERT INTO table_name (column1, column2) VALUES (%s, %s)", (value1, value2))
await cur.execute("UPDATE table_name SET column3 = %s WHERE id = %s", (value3, id))
await cur.execute("COMMIT")
self.write("Transaction completed successfully!")
except:
await cur.execute("ROLLBACK")
self.write("Transaction failed")
class Application(tornado.web.Application):
def __init__(self):
handlers = [
(r"/", MainHandler),
]
self.db = tornado_mysql.Pool(
dict(host='localhost', port=3306, user='root', passwd='password', db='database_name'),
max_size=10,
autocommit=True
)
super(Application, self).__init__(handlers)
if __name__ == "__main__":
app = Application()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
```
在上述代码中,我们首先创建了一个`Pool`对象,它包含了数据库的连接参数和连接池的最大连接数。然后,在我们的请求处理程序中,我们通过`pool.acquire()`方法获取一个连接。我们使用`async with`来确保在完成事务后自动释放该连接。
在使用的连接上创建一个`cursor`来执行事务中的SQL语句。在使用`try/except`块执行SQL语句时,如果任何一个语句失败,我们将立即回滚整个事务。如果所有语句都成功执行,则提交事务。
总之,使用`tornado_mysql`的连接池和事务非常简单,只需要在您的代码中添加一些额外的异步语句即可。