首页 > 代码库 > Python常用库
Python常用库
Sqlite3
- 创建一个Connection对象用于表示一个db,代码如下:
import sqlite3 conn = sqlite3.connect(‘example.db‘)#如果要在RAM中创建一个db,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)
- 然后创建一个Cursor对象用于执行sql命令执行查询时,要注意sql语句的安全,
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)
- 如果使用execute执行完查询语句后,获取数据可以使用如下方法:
- 将cursor当做一个iterator,使用for语句每次获取一行row数据
- 使用fetchone(),每次获取一行row数据,最后返回None
- 使用fetchall(),获取row的list,没有数据则返回None
Python常用库