zoukankan      html  css  js  c++  java
  • 【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))  #将字段名称和数据映射为字典
  • 相关阅读:
    Jmeter聚合报告、
    Jmeter中控件基本概念+工具使用系列(接口自动化、性能测试)
    PhpStorm创建Drupal模块项目开发教程(3)
    PhpStorm创建Drupal模块项目开发教程(2)
    PhpStorm创建Drupal模块项目开发教程
    IntelliJ IDEA 发布13版本——创造java奇迹
    图文解说PhpStorm 7.0版本新增内置工具
    图文解说PhpStorm 7.0版本语法着色
    图文解说PhpStorm 7.0版本支持PHP 5.5
    ReSharper 8.1支持TypeScript语言之代码检查特征
  • 原文地址:https://www.cnblogs.com/dplearning/p/5973067.html
Copyright © 2011-2022 走看看