纯python mysql驱动程序
trio_mysql的Python项目详细描述
Trio MySQL
这个包包含一个纯python和trio增强的mysql客户端库。 它是pymysql的一个简单的克隆,添加了异步方法 与三个框架兼容。
注意:trio mysql尝试遵守(异步版本的)高级 在PEP 249中定义的数据库api。然而,有些差异是 不可避免。
Example
下面的示例使用一个简单的表
CREATETABLE`users`(`id`int(11)NOTNULLAUTO_INCREMENT,`email`varchar(255)COLLATEutf8_binNOTNULL,`password`varchar(255)COLLATEutf8_binNOTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8COLLATE=utf8_binAUTO_INCREMENT=1;
importtrio_mysql.cursors# Connect to the databaseconnection=trio_mysql.connect(host='localhost',user='user',password='passwd',db='db',charset='utf8mb4',cursorclass=trio_mysql.cursors.DictCursor)asyncwithconnectionasconn:asyncwithconn.cursor()ascursor:# Create a new recordsql="INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"awaitcursor.execute(sql,('webmaster@python.org','very-secret'))# connection is not autocommit by default. So you must commit to save# your changes.conn.commit()# Alternately, you can set up a transaction:asyncwithconn.transaction():asyncwithconn.cursor()ascursor:# Create a new recordsql="INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"awaitcursor.execute(sql,('webmistress@python.org','totally-secret'))asyncwithconn.cursor()ascursor:# Read a single recordsql="SELECT `id`, `password` FROM `users` WHERE `email`=%s"awaitcursor.execute(sql,('webmaster@python.org',))result=awaitcursor.fetchone()print(result)
此示例将打印:
{'password':'very-secret','id':1}
Resources
DB-API 2.0:http://www.python.org/dev/peps/pep-0249
mysql参考手册:http://dev.mysql.com/doc/
MySQL客户端/服务器协议: http://dev.mysql.com/doc/internals/en/client-server-protocol.html
License
trio mysql是在mit许可下发布的。有关详细信息,请参见许可证。