`

python的sqlite3连接模块用法

 
阅读更多

python在2.5版以后,就自带了sqlite3模块,直接import即可。

 

模块可用后,就可以实现连接sqlite数据库的功能。sqlite3数据库与mysql不同,它每一个库叫做一个文件,连接的时候,库名即文件名,库内的表则操作方法与mysql相同,或许支持的sql语句会有一些差异。

 

我根据连接mysql的操作方法的包装,改写成了这个sqlite数据库连接模块。附件有这个源码。

 

 

#coding=gbk
import os,sys,string
import sqlite3
import traceback

class SQLObj(object):
    def __init__(self, db = 'youmoney'):
        self.db_name = db
        self.connected = 0
        self.cur  = None # 指针对象
        self.conn = None # 连接对象
        self._connect()

    def _connect(self):
        try:
            #print "connect to ", self.db_name
            self.conn = sqlite3.connect(self.db_name)
            self.cur = self.conn.cursor()
            self.connected = 1
        except:
            traceback.print_exc()
            self.connected = 0

    @property
    def is_connected(self):
        return self.connected != 0

    def _check_alive(self):
        if not self.is_connected:
            self._connect()
        if not self.is_connected:
            raise "Can't connect to sqlite3"

    #直接提取方法
    def query(self, sql, warning=1):
        self._check_alive()
        try:
            cur = self.conn.cursor()
            cur.execute(sql)
            res = cur.fetchall()
            cur.close()
        except:
            if warning:
                traceback.print_exc()
            return None
        return res


    #特殊的提取方法,形成字典返回
    def dquery(self, sql, warning=1):
        self._check_alive()
        try:
            cur = self.conn.cursor()
            cur.execute(sql)
            
            des = cur.description #获取字段描述
            res = cur.fetchall()  #获取字段内容
            ret = []
            if des:
                names = [x[0] for x in des] #从des中提取每个元素(列表)的第一个元素(字符串)
                for line in res:
                    ret.append(dict(zip(names, line))) #dict是形成字典的工厂函数,zip用于多个列表循环(name, line是两个列表)
            else:
                ret = res
            cur.close()
        except:
            if warning:
                traceback.print_exc()
            return None
        return ret

    def execute(self, sql, warning=1):
        self._check_alive()
        try:
            cur  = self.conn.cursor()
            rows = cur.execute(sql)
            self.conn.commit()
            cur.close()
            return rows
        except:
            if warning:
                traceback.print_exc()
            return -1

    def close(self):
        if self.connected == 0:
            return
        try:
            self.cur.close()
            self.conn.close()
            self.connected = 0
        except:
            pass

    def __del__(self):
        self.close()

def _lbsql_test_sqlite3():
    db = SQLObj(db = "youmoney.db")
    lists = db.dquery("select * from capital")
    for l in lists:
        for k, v in l.items():
            print "%s: %s" %(k, v),
            break
        break

if __name__ == "__main__":
    _lbsql_test_sqlite3()

  

分享到:
评论

相关推荐

    到标准 sqlite3 模块的异步桥接_python_代码_下载

    aiosqlite 为 sqlite 数据库提供了一个友好的异步...它复制了标准sqlite3模块,但具有所有标准连接和游标方法的异步版本,以及用于自动关闭连接和游标的上下文管理器: 更多详情、使用方法,请下载后阅读README.md文件

    sqlite3封装类

    很多年前写的一个sqlite通用类模块。...该类的使用方法见sqldb.h,该头文件有具体的使用示例。 其中 libPublic.h没上传,里面只用到数据类型的定义(如BOOL,类printf函数 等,可在各平台编译自行补上)。

    aiosqlite:到标准sqlite3模块的异步桥

    它复制标准的sqlite3模块,但具有所有标准连接和游标方法的异步版本,以及用于自动关闭连接和游标的上下文管理器: async with aiosqlite.connect(...) as db: await db.execute("INSERT INTO some_table ...") ...

    python模块

    * sqlite3: sqlite3 模块提供了SQLite数据库访问的接口。SQLite数据库是以一个文件或内存的形式存在的自包含的关系型数据库。 * DBM-style 数据库模块:python提供了打了的modules来支持UNIX DBM-style数据库文件。...

    sqlite3_paramstyle:sqlite3模块的ANSI C printf格式参数样式

    sqlite3paramstyle sqlite3模块的扩展paramstyle 为遵循以下paramstyles到sqlite3模块提供兼容性。 ANSI C printf格式代码,例如... WHERE name =%s Python扩展格式代码,例如... WHERE name =%(name)s 在2.7.8...

    基于Python(Django)+SQLite3实现的(Web)资产管理系统【100013278】

    (3)资产折旧管理模块:根据不同的折旧方法计算资产的折旧金额和残值 (4)维修管理模块:增删改查维修记录信息 (5)员工和部门管理模块:可以添加删除员工和部门 (6)权限管理模块:记录员工和部门的权限信息 ...

    学习python之编写简单简单连接数据库并执行查询操作

    python 连接数据库操作, 方法如下: 在本机的mysql 数据库中有一个名为yao的库,其中有一个名为user的表,表中的内容如图 下面,则是python连接数据库的方法,及查找出表中的内容,代码如下: #! /usr/bin/python #...

    PYTHON 面向对象编程指南

    第1部分讲述用特殊方法实现Python风格的类,分别介绍了__init__()方法、与Python无缝集成—基本特殊方法、属性访问和特性及修饰符、抽象基类设计的一致性、可调用对象和上下文的使用、创建容器和集合、创建数值类型...

    Python面向对象编程指南

    第1部分讲述用特殊方法实现Python风格的类,分别介绍了__init__()方法、与Python无缝集成—基本特殊方法、属性访问和特性及修饰符、抽象基类设计的一致性、可调用对象和上下文的使用、创建容器和集合、创建数值类型...

    sqlite_uuid:轻松安装SQLite UUID扩展

    在Python环境中安装SQLite可加载扩展的简便方法。 安装 pip install sqlite_uuid 笔记 当您安装此软件包时,将构建一个SQLite。 在Python中,您可以通过两种方式加载扩展。 第一步是使用conn.enable_load_extension...

    easysql:操作数据库的python封装

    EasySQL找到一个更易用的sql orm: ,所以再见 easysql。抽取自中数据库操作相关模块。原有代码是基于mysql的python驱动写成的,使用方法戳。...做点小应用 sqlite3 足够了sqlite3 版的使用方法戳。

    基于Python毕业设计企业编码管理的程序(源码+使用说明)

    安装必要的Python库,如sqlite3、flask或django。 根据需要配置数据库连接和编码规则。 编码规则设置: 使用CodeRule类创建和验证编码规则。 调用generate_code方法生成新的编码。 编码查询: 调用query_code方法...

    sqlalchemy-s3sqlite:将sqlite数据库保留在s3中,以与AWS Lambda一起使用

    sqlalchemy-s3sqlite 将sqlite数据库保留在s3中,以与AWS Lambda一起使用该模块允许在AWS Lambda内部使用Flask-User。 通常,sqlite数据库将在两次调用之间随机消失。 该模块将根据需要将数据库复制到s3存储或从s3...

    python数据分析随书代码

    8.1 基于sqlite3的轻量级访问 181 8.2 通过pandas访问数据库 183 8.3 SQLAlchemy 185 8.3.1 SQLAlchemy的安装和配置 186 8.3.2 通过SQLAlchemy填充数据库 188 8.3.3 通过SQLAlchemy查询数据库 189 8.4 Pony ...

    tibiawiki-sql:从TibiaWiki文章生成SQLite数据库的Python脚本

    可以使用以下方法从PyPi安装该模块: pip install tibiawikisql 安装后,您可以使用以下任何地方运行命令: python -m tibiawikisql generate 或者 tibiawikisql 该过程可能很长,第一次可能要花费20分钟。 ...

    Python Cookbook

    1.9 简化字符串的translate方法的使用 18 1.10 过滤字符串中不属于指定集合的字符 20 1.11 检查一个字符串是文本还是二进制 23 1.12 控制大小写 25 1.13 访问子字符串 26 1.14 改变多行文本字符串的缩进 29 ...

    Python核心编程(第二版).part3.rar

     学习Pyttlon中有关数据库的API,以及如何在Pyttlon中使用各种不同的数据库系统,包括MySQL、Postgres和SQLite。  本书提供:  对Python核心特性系统的专家级讲解;  开发复杂的应用程序和软件所需的强大深入的...

    基于python flask web框架的全栈项目.zip

    python manager.py db upgrade(更新数据库,第一次使用该命令会新建一个数据库data-dev.sqlite) 部署程序, python manager.py deploy 在本地运行程序, python manager.py runserver打开 http://127.0.0.1:5000 端口...

    pyunlocode:用于UNLocode的Python包装模块

    适用于UN / LOCODE的Python包装模块 版本 0.9 UN / LOCODE数据 来自数据 CSV“ {yyyy}-{v} SubdivisionCodes.csv”和“ {yyyy}-{v} UNLOCODE CodeListPart?.csv”的参考数据 执行 解析CSV文件并存储到sqlite DB中 ...

Global site tag (gtag.js) - Google Analytics