python访问MySQL server,可以使用 _mysql模块, 也可使用进一步封装过的MySQLdb包。
若使用MySQLdb,则需要单独安装。
今天发现MySQLdb的API手册居然被墙了… …
它的原始链接是: http://mysql-python.sourceforge.net/MySQLdb-1.2.2/
我把这个手册下载并上传到自己的博客上,供需要的朋友参考。
https://www.lijiejie.com/python/MySQLdb/
MySQLdb包是遵循Python DB API 2.0规范开发的,它的用法可以参阅:
http://www.python.org/dev/peps/pep-0249/
MySQLdb中常用的类有Connection(首字母大写)和Cursors
Connection类
该类的参考文档可参考:
https://www.lijiejie.com/python/MySQLdb/private/MySQLdb.connections.Connection-class.html
通过关键字参数来构造Connection对象,举个例子:
import MySQLdb as mdb try: conn = mdb.Connection(host = '127.0.0.1', user = 'root', passwd = '******', db = 'test', charset='utf8') except Exception, e: print e finally: if vars().has_key('conn'): conn.close
Connection类包括__enter__和__exit__方法,可以直接使用with语句,其实并不需要上述try/except/finally语句。
请看下面的例子:
import MySQLdb as mdb conn = mdb.Connection(host = '127.0.0.1', user = 'root', passwd = '******', db = 'test', charset='utf8') with conn: print 'client:', conn.get_host_info()
Connection对象可以进行SQL查询,但文档中也指出,这是非标准的做法,并不推荐使用的:
import MySQLdb as mdb conn = mdb.Connection(host = '127.0.0.1', user = 'root', passwd = '******', db = 'test', charset='utf8') with conn: conn.query('select * from Books') print conn.use_result().fetch_row(10) #max row number = 10
因为__enter__方法返回的是cursor对象,可以使用这个cursor对象进行SQL查询,举例查询Book表中的所有行:
import MySQLdb as mdb conn = mdb.Connection(host = '127.0.0.1', user = 'root', passwd = '******', db = 'test', charset='utf8') with conn as cursor: cursor.execute('select * from Books') for i in range(cursor.rowcount): print cursor.fetchone()
另外,Connection对象的__enter__和__exit__之间,默认是一个事务(transaction),
只有当所有的SQL语句执行成功,才会commit,否则,会rollback
请看例子:
import MySQLdb as mdb conn = mdb.Connection(host = '127.0.0.1', user = 'root', passwd = '******', db = 'test', charset='utf8') with conn as cursor: cursor.execute('INSERT INTO Books set Name = "%s"' % ('book1',)) cursor.execute('INSERT INTO Books set Name = %s' % ('book2',))
上面,第一条插入语句是正确的,第二条插入语句有误,没有加引号。
最终的运行结果,是一条记录都没有插入。
感觉小内存的机器,用sqlite比较爽
确实如此,在大多数的情形下面,我们都只需要轻量级的数据库
学习了 谢谢
大表哥你好,你的博客很漂亮,促使我也想做个自己的博客了,能否写一篇关于你博客制作,优化的文章。我的连接:www.kmx26.com