python脚本sqlite3模块的应用

#!/usr/bin/python

# -*- coding:utf-8 -*-

import sqlite3

import os

class SQLTest:

‘‘‘sqlite数据库接口‘‘‘

def __init__(self,path=‘‘,verbose=False):

self.verbose = verbose

self.path = path

if os.path.isfile(path):

self.conn = sqlite3.connect(path)

if self.verbose:

print(‘硬盘上面:[{}].format(path)‘)

else:

self.conn = sqlite3.connect(‘:memory:‘)

if self.verbose:

print(‘内存上面:[:memory:]‘)

def setverbose(self,b):

self.verbose = b

def createtable(self,sql):

‘‘‘创建数据库表‘‘‘

if sql is not None and sql != ‘‘:

cu = self.conn.cursor()

if self.verbose:

print(‘执行sql:[{}]‘.format(sql))

cu.execute(sql)

self.conn.commit()

if self.verbose:

print(‘创建数据库表成功!‘)

self.close_all(cu)

else:

print(‘The [{}] is empty or equal None!‘.format(sql))

def querytable(self):

sql = ‘SELECT name FROM sqlite_master WHERE type="table" ORDER BY name‘

cu = self.conn.cursor()

cu.execute(sql)

return cu.fetchall()

def renametable(self,table,newtable):

if table is not None and talbe !=‘‘:

sql = ‘ALTER TABLE %s RENAME TO "%s" ‘ % (table,newtable)

cu = self.conn.cursor()

cu.execute(sql)

self.conn.commit()

print(‘delete table sucess!‘)

self.close_all(cu)

else:

print(‘The [{}] is empty or equal None!‘.format(sql))

def insert(self,sql,data):

if sql is not None and sql != ‘‘:

if data is not None:

cu = self.conn.cursor()

for d in data:

cu.execute(sql,d)

self.conn.commit()

if self.verbose:

print(‘插入数据库表成功!‘)

self.close_all(cu)

else:

print(‘The [{}] is empty or equal None!‘.format(sql))

def fetchall(self,sql):

if sql is not None and sql != ‘‘:

cu = self.conn.cursor()

if self.verbose:

print(‘执行sql:[{}]‘.format(sql))

cu.execute(sql)

return cu.fetchall()

else:

print(‘The [{}] is empty or equal None!‘.format(sql))

def fetchone(self,sql,data):

if sql is not None and sql != ‘‘:

if data is not None:

cu = self.conn.cursor()

cu.execute(sql,(data,))

return cu.fetchall()

else:

print(‘The [{}] is None!‘.format(data))

else:

print(‘The [{}] is empty or equal None!‘.format(sql))

def updata(self,sql,data):

if sql is not None and sql != ‘‘:

if data is not None:

cu = self.conn.cursor()

for d in data:

cu.execute(sql,d)

self.conn.commit()

self.close_all(cu)

else:

print(‘The [{}] is empty or equal None!‘.format(sql))

def rowcount(self,table):

sql = ‘select count (*) from "%s"‘ % table

cu = self.conn.cursor()

r = cu.execute(sql)

return (r.fetchone()[0])

def delete(self,sql,data):

if sql is not None and sql != ‘‘:

if data is not None:

cu = self.conn.cursor()

for d in data:

cu.execute(sql,d)

self.conn.commit()

self.close_all(cu)

else:

print(‘The [{}] is empty or equal None!‘.format(sql))

def droptable(self,table):

if table is not None and table != ‘‘:

sql = ‘DROP TABLE IF EXISTS ‘ + table

cu = self.conn.cursor()

cu.execute(sql)

self.conn.commit()

print(‘delete table sucess!‘)

self.close_all(cu)

else:

print(‘The [{}] is empty or equal None!‘.format(sql))

def close_all(self,cu):

try:

if cu is not None:

cu.close()

finally:

if cu is not None:

cu.close()

# function

def drop_table_test(sql,table):

‘‘‘删除数据库表测试‘‘‘

print(‘删除数据库表测试 ...‘)

db.droptable(table)

def create_table_test(sql):

‘‘‘创建数据库表测试‘‘‘

print(‘创建数据库表测试 ...‘)

create_table_sql = ‘‘‘CREATE TABLE IF NOT EXISTS ‘table1‘(

‘id‘ integer(32) NOT NULL,

‘name‘ nvarchar(128) NOT NULL,

PRIMARY KEY(‘id‘)

)‘‘‘

sql.createtable(create_table_sql)

def insert_test(sql):

‘‘‘插入数据测试 ...‘‘‘

print(‘插入数据测试 ...‘)

insert_sql = ‘INSERT INTO table1 values(?,?)‘

data = [(1,‘aaa‘),(2,‘bbb‘)]

sql.insert(insert_sql,data)

def fetchall_test(sql):

‘‘‘查询所有数据‘‘‘

print(‘查询所有数据 ...‘)

fetchall_sql = ‘SELECT * FROM table1‘

r = sql.fetchall(fetchall_sql)

for e in range(len(r)):

print(r[e])

def fetchone_test(sql):

‘‘‘查询一条数据‘‘‘

print(‘查询一条数据 ...‘)

fetchall_sql = ‘SELECT * FROM table1 WHERE id = ?‘

data = 1

r = sql.fetchone(fetchall_sql,data)

for e in range(len(r)):

print(r[e])

def query_test(sql):

‘‘‘有几个表‘‘‘

print(‘有几个表 ...‘)

print(sql.query_table(db))

def update_test(sql):

‘‘‘更新数据‘‘‘

print(‘更新数据 ...‘)

update_sql = ‘UPDATE table1 SET name = ? WHERE id = ?‘

data = [(‘TestA‘,1),(‘TestB‘,2)]

sql.updata(update_sql,data)

def delete_test(db):

‘‘‘删除数据‘‘‘

print(‘删除数据 ...‘)

delete_sql = ‘DELETE FROM table1 WHERE name = ? and id = ?‘

data = [(‘TestA‘,1)]

sql.delete(delete_sql,data)

# self test

if __name__ == ‘__main__‘:

sql = SQLTest(verbose=True)

#创建数据库表

create_table_test(sql)

#插入数据

insert_test(sql)

#查询多条数据

fetchall_test(sql)

#查询一条数据

fetchone_test(sql)

#更新数据

update_test(sql)

#查询多条数据

fetchall_test(sql)

#删除一条数据

delete_test(sql)

print(sql.rowcount(‘table1‘))

#查询多条数据

fetchall_test(sql)

#==================================================================================

测试结果

时间: 2024-10-07 14:27:17

python脚本sqlite3模块的应用的相关文章

临时数据库之python用sqlite3模块操作sqlite

SQLite是一个包含在C库中的轻量级数据库.它并不需要独立的维护进程,并且允许使用非标准变体(nonstandard variant)的SQL查询语句来访问数据库. 一些应用可是使用SQLite保存内部数据.它也可以在构建应用原型的时候使用,以便于以后转移到更大型的数据库. SQLite的主要优点: 1. 一致性的文件格式: 在SQLite的官方文档中是这样解释的,我们不要将SQLite与Oracle或PostgreSQL去比较,与我们自定义格式的数据文件相比,SQLite不仅提供了很好的 移

python安装sqlite3模块

Python安装sqlite3 环境为Ubuntu16.04 Apache2.4 Python2.7.13 django 1.8 今天部署apache+django,经过各种折腾,好不容易配置完了,发现错误Apache的日志里有一项 ImproperlyConfigured: Error loading either pysqlite2 or sqlite3 modules (tried in that order): No module named _sqlite3 于是打开Python 测试

利用ngx_python模块嵌入到Python脚本

导读 Python是一种计算机程序设计语言.是一种动态的.面向对象的脚本语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发. ngx_python 是为 nginx 嵌入 python 脚本的模块. 环境 - python 2.7.* - nginx-1.6.3+ 安装 git clone https://github.com/rryqszq4/ngx_python.git wget 'http://nginx.org/d

Python sqlite3模块的text_factory属性的使用方法研究

写这篇文章,起源于要写一个脚本批量把CSV文件(文件采用GBK或utf-8编码)写入到sqlite数据库里. Python版本:2.7.9 sqlite3模块提供了con = sqlite3.connect("D:\\text_factory.db3") 这样的方法来创建数据库(当文件不存在时,新建库),数据库默认编码为UTF-8,支持使用特殊sql语句设置编码 PRAGMA encoding = "UTF-8"; PRAGMA encoding = "U

Python 3.6.0的sqlite3模块无法执行VACUUM语句

Python 3.6.0的sqlite3模块存在一个bug(见issue 29003),无法执行VACUUM语句. 一执行就出现异常: Traceback (most recent call last):  File "D:\desktop\cannot_vacuum.py", line 25, in <module>    conn.execute('VACUUM')sqlite3.OperationalError: cannot VACUUM from within a

scapy编写简单的ARP扫描脚本 本课程基于 Python 的 scapy 模块编写,适合有 Python 基础的同学学习,最终完成一个简单的 ARP 扫描脚本。

scapy编写简单的ARP扫描脚本 本课程基于 Python 的 scapy 模块编写,适合有 Python 基础的同学学习,最终完成一个简单的 ARP 扫描脚本.

python内置的sqlite3模块,使用其内置数据库

1.python内置的sqlite3模块,创建数据库中的表,并向表中插入数据,从表中取出所有行,以及输出行的数量. #!/usr/bin/env python3 #创建SQLite3内存数据库,并创建带有四个属性的sales表 #sqlite3模块,提供了一个轻量级的基于磁盘的数据库,不需要独立的服务器进程 import sqlite3 #使用‘:memory:’在内存中创建了一个数据库,创建了连接对象con来代表数据库 con = sqlite3.connect(':memory:') #创建

Python高手之路【七】python基础之模块

本节大纲 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式 1:模块介绍 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以

将Python脚本文件包装成可执行文件

将Python脚本文件包装成可执行文件,其目的有二: 一则: 不需要依赖Python编译器就可以运行软件 二则: 不想让自己的源码公布出去 常用的工具有: py2exe.cx_freeze等 [工具:py2exe] 安装py2exe 安装该工具很简单: 只需要从官方网站:http://www.py2exe.org/下载与版本对应的安装程序,点击下一步即可完成安装. 安装后,执行import py2exe,不报错则表示安装成功! >>> import py2exe >>>