【python】sqlite使用
官方文档:https://docs.python.org/2/library/sqlite3.html
sqlite教程:http://www.runoob.com/sqlite/sqlite-delete.html
安装:
linux系统一般自带sqlite不需安装。在终端输入sqlite3,出现如下提示则表示已经安装了sqlite
SQLite version 3.6.20
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
新建一个数据库:
如下,直接在命令行输入即可
sqlite3 test.db
注意,sqlite会在当前文件目录下生成test.db文件。比如在路径 /home/A/B下生成了test.db,如果想在/home/X/Y目录下使用该数据库,需要加上路径
sqlite3 /home/A/B/test.db
如果没有该文件,sqlite会生成对应文件。
在python中使用sqlite
需要import sqlite3模块,具体使用可以参见上面的链接。主要注意两点:
1.sqlite转义方法
在数据库操作中,经常会用到类似于 select * from ABC where XXX = '%s' % ("""a'bc"d""")的情况。此时%s对应的字符中的引号会导致错误,因此需要转义。一般数据库都会有自己的转义函数。像mysql就有MySQLdb.escape_string() 处理该问题。在sqlite中,用?匹配解决该问题。
即将待插入的值都用?占位,将数据用元组传入。
t = ('RHAT',)
c.execute('SELECT * FROM stocks WHERE symbol=?', t)
print c.fetchone()
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)
这样避免了引号问题,安全性更好。
2.获取表字段名称与表数据对应关系
在pymongo中,使用coll.find()查找信息得到的都是字典,比如{"a":1,"b":2,"c":3},我们很容易通过字典判断字段的取值情况。但是sqlite给出的结果是列表形式,如[1,2,3]并不给出对应的字段名,如果不清楚有哪些字段很难处理。
可以采用如下方法解决:
#coding=utf8
import sqlite3 conn = sqlite3.connect(dbpath)
cursor = self.conn.cursor() #获取字段名称
sql = 'pragma table_info(%s)' % tb_name
cursor.execute(sql)
parg = cursor.fetchall()
col_names = [p[1] for p in parg] #获取字段名称 #获取数据
sql = 'SELECT * FROM %s' % tb_name
for data in cursor.execute(sql):
record = dict(zip(col_names, data)) #将字段名称和数据映射为字典
【python】sqlite使用的更多相关文章
- python sqlite
1.导入Python SQLITE数据库模块 Python2.5之后,内置了SQLite3,成为了内置模块,这给我们省了安装的功夫,只需导入即可~ import sqlite3 2. 创建/打开数据库 ...
- python sqlite 插入的数据含有变量,结果不一致
def insert(): conn = sqlite3.connect("sqlite.db") print "open database passed" t ...
- python sqlite 查询表的字段名 列名
获得查询结果表的列名: [python] view plain copy print ? db = sqlite.connect('data.db') cur = db.cursor() cur ...
- python SQLite说一点点, python使用数据库需要注意的几点
SQLite是一种嵌入式数据库,它的数据库就是一个文件.由于SQLite本身是C写的,而且体积很小,所以,经常被集成到各种应用程序中,甚至在iOS和Android的App中都可以集成. Python就 ...
- python sqlite中通过字段名获取查询结果
在连sqlite数据库时,用fetchall()查询结果,是用row[0],row[1]这样的方式来打印每列的结果 但是我想用row[“字段名”]方式查询怎么办? import sqlite3 con ...
- python+Sqlite+Dataframe打造金融股票数据结构
5. 本地数据库 很简单的用本地Sqlite查找股票数据. DataSource类,返回的是Dataframe物件.这个Dataframe物件,在之后的业务,如计算股票指标,还需要特别处理. impo ...
- Python——SQLite
一.连接数据库 import sqlite3 conn = sqlite3.connect('数据库名.db') 二.插入 import sqlite3 conn = sqlite3.connect( ...
- [python]用Python进行SQLite数据库操作
用Python进行SQLite数据库操作 1.导入Python SQLITE数据库模块 Python2.5之后,内置了SQLite3,成为了内置模块,这给我们省了安装的功夫,只需导入即可~ ]: u ...
- sqlite以及python的应用
有点乱,自己平时,遇到了就记下来,所以没整理. 数据库sqlite,以及Qt对数据库的操作 sql学习网址: sqlite官网:http://www.sqlite.org http://www.w3s ...
- 使用 Python 的 SQLite JSON1 和 FTS5 扩展
早在九月份,编程界出现一个名为 json1.c 的文件,此前这个文件一直在 SQLite 的库里面.还有,笔者也曾总结通过使用新的 json1 扩展来编译 pysqlite 的技巧.但现在随着 SQL ...
随机推荐
- runtime(面试)
运行时机制,runtime库里面包含了跟类.成员变量.方法相关的API,比如获取类里面的所有成员变量,为类动态添加成员变量,动态改变类的方法实现,为类动态添加新的方法等 需要导入<objc/me ...
- java 在接口里函数不能重载?
项目里使用hession远程调用serviceRemote接口,而serviceRemote接口里有两个save方法,参数分别是CpCredential对象和List,但运行发现会报莫名其妙的错. 后 ...
- Inno Step 安装包程序 写INI配置文件脚本
[INI]Filename: "{app}\Config\config.ini"; Section: "config";Key: "name" ...
- UnicodeDecodeError: 'gbk' codec can't decode byte 0xff in position 0: illegal multibyte sequence
混淆了 python2 里边的 str 和 unicode 数据类型. 1. 对需要 str->unicode 的代码,可以在前边写上 import sys reload(sys) sys.se ...
- 12个Linux进程管理命令介绍
导读 执行中的程序称作进程.当程序可以执行文件存放在存储中,并且运行的时候,每个进程会被动态得分配系统资源.内存.安全属性和与之相关的状态.可以有多个进程关联到同一个程序,并同时执行不会互相干扰.操作 ...
- android快速开发框架
网络: socket: mina http: http://loopj.com/android-async-http/ UI: http://jakewharton.github.io/butterk ...
- JavaScript深入浅出4-对象
慕课网教程视频地址:Javascript深入浅出 对象的结构:包含一系列无序的属性,每个属性都有字符串key和对应的值 创建对象:对象字面量.new/原型链.Object.create 对象的属性操作 ...
- 39 网络相关函数(七)——live555源码阅读(四)网络
39 网络相关函数(七)——live555源码阅读(四)网络 39 网络相关函数(七)——live555源码阅读(四)网络 简介 14)readSocket从套接口读取数据 recv/recvfrom ...
- iis不支持下载apk的解决办法
添加mime类型即可 扩展名:".apk", MIME类型:"application/vnd.android.package-archive"
- php过滤ascii控制字符
还记得以前在工作中,将爬来的其它网站的数据导到xml.但是会遇到一个问题:即网页会有ascII的控制字符. 一开始以为是别人为了防止采集而加入的,然后发现一个就往过滤表里加一个.直到慢慢发现,他们都是 ...