热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【python】sqlite使用

官方文档:https:docs.python.org2librarysqlite3.htmlsqlite教程:http:www.runoob.comsqlitesqlite-del

官方文档: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)) #将字段名称和数据映射为字典

 


推荐阅读
  • 远程访问用户 Kindle通过电子书实现控制
    介绍自2007年以来,亚马逊已售出数千万台Kindle,令人印象深刻。但这也意味着数以千万计的人可能会因为这些Kindle中的软件漏洞而被黑客入侵。他 ... [详细]
  • Python与MySQL交互指南:从基础到进阶
    本文深入探讨了Python与MySQL数据库的集成方法,包括数据库连接、数据表创建、索引管理、数据操作以及如何防止SQL注入等关键内容。适合初学者及希望提升数据库操作技能的开发者。 ... [详细]
  • C++中类的内外定义及内联函数详解
    本文详细介绍了C++中的类内定义与类外定义,以及内联函数的使用方法和注意事项。通过实例说明了不同定义方式的优缺点,并探讨了编译器对内联函数的处理机制。 ... [详细]
  • 微服务架构详解及其入门指南
    本文详细介绍了微服务的基本概念、发展历程、与传统架构的区别及优势,并探讨了适合采用微服务架构的场景。此外,文章还深入分析了几个主流的微服务开发框架,特别是Spring Cloud的组成和特点。 ... [详细]
  • 使用Python模拟登录教务系统抓取成绩并分析存储
    本文详细介绍如何使用Python编程语言模拟登录学校教务系统,抓取学生的成绩信息,并进行数据分析和可视化处理,最终将数据存储到MySQL数据库中。 ... [详细]
  • Hibernate入门指南:单表数据库操作详解
    本文介绍了Hibernate作为全面的ORM框架的基础知识,并详细讲解了在MyEclipse环境中配置Hibernate以及进行基本的数据库单表操作的方法,包括增删改查等常见操作。 ... [详细]
  • 深入解析ASP.NET中的HttpHandler、HttpModule与IHttpHandlerFactory
    本文探讨了ASP.NET页面生命周期中的关键组件——HttpHandler、HttpModule和IHttpHandlerFactory的工作原理及其应用场景。通过实例分析,帮助读者更好地理解和利用这些组件来优化Web应用程序。 ... [详细]
  • 深入解析 Android 中的 ActivityGroup 实现
    本文详细探讨了如何在 Android 应用中使用 ActivityGroup 来实现类似微博客户端主界面的效果,并分析了 TabActivity 的局限性,推荐使用更为灵活的 ActivityGroup 方案。 ... [详细]
  • 实践指南:利用Jenkins与JMeter实现自动化测试报告通知
    本文详细介绍了如何结合Jenkins和JMeter工具,通过自定义脚本向用户发送测试报告的通知。这不仅提高了开发团队的工作效率,也确保了信息的及时传递。 ... [详细]
  • ANSI最全介绍linux终端字体改变颜色等ANSI转义序列维基百科,自由的百科全书由于国内不能访问wiki而且国内关于ANSI的介绍都是简短的不能达到,不够完整所以转wiki到此 ... [详细]
  • 浏览器、中间件与服务器的交互机制
    本文详细探讨了浏览器、中间件和服务器之间的交互过程,特别是HTTP请求的完整流程,包括DNS解析、TCP连接建立及数据传输等关键步骤。 ... [详细]
  • MySQL查询语句深入解析与应用实例
    本文详细介绍了MySQL查询语句的应用技巧,包括排除特定记录的高级查询方法以及UNION和UNION ALL的使用场景与性能对比。通过具体示例,帮助读者理解如何优化查询以提高数据库操作效率。 ... [详细]
  • 教程:如何打造令人印象深刻的GitHub个人主页Readme
    本文将指导您如何创建一个既专业又个性化的GitHub个人主页Readme,通过添加统计数据、常用语言和最近活动等元素,让您的主页更加吸引人。 ... [详细]
  • POJ2226 二分图最小覆盖问题
    在一个大小为n×m的网格中,部分单元格为泥泞状态,其余为干净。目标是使用宽度固定为1但长度可变的木板覆盖所有泥泞单元格,且不覆盖任何干净单元格。木板允许重叠。本问题通过构建二分图并求其最小覆盖来解决。 ... [详细]
  • django项目中使用手机号登录
    本文使用聚合数据的短信接口,需要先获取到申请接口的appkey和模板id项目目录下创建ubtils文件夹,定义返回随机验证码和调取短信接口的函数function.py文件se ... [详细]
author-avatar
寄到家的_259
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有