码迷,mamicode.com
首页 > 编程语言 > 详细

python常用库

时间:2014-10-30 22:17:24      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   color   os   ar   使用   for   

Sqlite3

  1. 创建一个Connection对象用于表示一个db,代码如下:
    import sqlite3
    conn = sqlite3.connect(example.db)#如果要在RAM中创建db,可以使用特定名字:memory:

    当有多个connection同时访问db并且有一个进程在修改db时,db一直是被lock的,直到transaction被提交,connect()的常用参数:
      • timeout参数指定连接等待多久然后抛出异常,默认是5秒.
      • isolation_level:设置如何开启tranction,默认遇到DML语句时打开transaction,遇到non-DML语句时提交transaction
      • cached_statements:本次connection可以在缓存中存放的语句数,默认为100
      • uri:boolean型,使用uri指定db,可以指定连接的option,如以只读方式打开db
        db = sqlite3.connect(‘file:path/to/database?mode=ro‘, uri=True)
  2. 创建一个Cursor对象用于执行sql命令,要注意sql语句的安全,另外对于execute,executemany和executescript函数可以直接使用Connection对象调用,函数内会自动创建cursor,并返回cursor对象
    c=conn.cursor()
    # Never do this -- insecure! 
    
    symbol = RHAT 
    
    c.execute("SELECT * FROM stocks WHERE symbol = ‘%s‘" % symbol) 
    
    # Do this instead,注意元组中只有一个元素时后面要有逗号
    #sql语句中的替换符为? 
    
    t = (RHAT,) 
    
    c.execute(SELECT * FROM stocks WHERE symbol=?, t) 
    
    print(c.fetchone()) 
    
    # Larger example that inserts many records at a time 
    
    purchases = [(2006-03-28, BUY, IBM, 1000, 45.00), 
    
    (2006-04-05, BUY, MSFT, 1000, 72.00), 
    
    (2006-04-06, SELL, IBM, 500, 53.00), 
    
    ] 
    
    c.executemany(INSERT INTO stocks VALUES (?,?,?,?,?), purchases)
  3. 如果使用execute执行完查询语句后,获取数据可以使用如下方法:
    • 将cursor当做一个iterator,使用for语句每次获取一行row数据
    • 使用fetchone(),每次获取一行row数据,最后返回None
    • 使用fetchall(),获取row的list,没有数据则返回None
  4. 将sqlite不支持的python类型加到sqlite中,首先要将该类型转换成sqlite支持的类型,通常用str。具体方法有两种:
    • 实现类的__conform__方法
      bubuko.com,布布扣
      __conform__
    • 使用sqlite3.register_adapter为类注册一个adapter方法,将类型转换成str,sqlite3 module内部为python的内置类型datetime.date和datetime.datetime提供了adapter,将它们转换为iso。
      bubuko.com,布布扣
      adapter

      还可以使用sqlite3.register_converter为类注册一个convert方法,将数据库中的值转换为python类型。为了使sqlite3知道从数据库中查询出的数据的实际类型需要设置sqlite.connect方法的detect_types参数,值有两个:
      • 通过declared type(隐式方法)
      • 通过列名(显示方法)
        bubuko.com,布布扣
        detect_type
  5. class sqlite3.Row:表示一行数据,可以使用列名或者索引下标访问某列的值

python常用库

标签:style   blog   http   io   color   os   ar   使用   for   

原文地址:http://www.cnblogs.com/phenixyu/p/4063752.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!