这是我写的一个使用 pysqlite2 写的数据库备份的小程序,功能相对简单。它可以将指定的库备份成Insert语句。代码如下:
#coding=cp936
#本程序用于sqlite数据库的备份,备份结果为SQL的INSERT语句
#本程序适用于pysqlite2版本
#开发者:limodou
#版权:GPL
#
import sqlite3 as sqlite
import os.path
def dbbackup(dbname, path='', singlefile=False, encoding='utf-8'):
"""备份整个数据库
dbname 数据库文件名
path 数据保存目录
singlefile 是否保存到单个文件,如果为True,则数据会保存在以dbname开头的.txt文件中
否则会按表名分别存储
encoding 保存文件编码
"""
cx = sqlite.connect(dbname)
cu = cx.cursor()
cu.execute(u'select name from sqlite_master where type="table" order by name')
if singlefile:
filename = os.path.join(path, os.path.basename(dbname) + '.txt')
f = file(filename, 'wb')
for (table,) in cu.fetchall():
if not singlefile:
filename = os.path.join(path, table + '.txt')
f = file(filename, 'wb')
unload(cu, table, f, encoding)
if not singlefile:
f.close()
def unload(cu, tablename, fp, encoding='utf-8'):
cu.execute('select * from %s' % tablename)
if cu.description:
description = cu.description
sql = 'INSERT INTO %s ' % tablename
columns = []
for v in description:
columns.append(v[0])
sql += '(' + ','.join(columns) +' ) VALUES '
fp.write("BEGIN TRANSACTION;\n")
for record in cu.fetchall():
fsql = sql.encode(encoding) + '('+ ','.join(_repr(record, encoding)) +' );\n'
fp.write(fsql)
fp.write("COMMIT;\n")
def _repr(record, encoding='utf-8'):
s = []
for i in record:
if isinstance(i, str):
s.append("'" + i + "'")
elif isinstance(i, unicode):
s.append("'" + i.encode(encoding) + "'")
else:
s.append(str(i))
return s
if __name__ == '__main__':
dbbackup('DLib.db', 'g:')
# dbbackup(‘d:/test.db’, ‘d:/project’, singlefile=True, encoding=’cp936′)
只要你自已建一个库,然后按测试代码改一下试试就行了。
如果想使用 Python 来装入数据,可以:
cu.executescript(file('g:/DataRecord.txt').read())
cx.commit()
其中DataRecord.txt为备份出的文件。大家有兴趣可以试试。
当然这些工作使用sqlite的客户端都是可以做的,但有时还是希望在程序中来控制一切。
from:http://blog.donews.com/limodou/archive/2005/06/14/430149.aspx
分享到:
相关推荐
文件数据库sqlite3与python使用sqlite数据库的相关工具。
资源来自pypi官网。 资源全名:pysqlite-2.5.6.tar.gz
pysqlite-2.6.3.win32-py2.7
该文件包含了SQL语法基础,SQLite3支持的数据类型,windows 如何安装sqlite3,PyQt界面实现中常用的消息弹出对话框、提供用户输入的输入框、打开文件获取文件/目录路径的文件对话框。
题外话,其实还有另外一个选择,就是使用trac 0.11dev。不知道具体的原因,trac已经决定使用Genshi来代替ClearSilver作为模板引擎,具体的文档是[Trac with Python 2.5]...
pysqlite-2.8.1 for linux
pysqlite-2.5.5.tar.gz
pysqlite-2.4.1.win32-py2.4 Trac支持的数据库系统SQLite
pysqlite-2.6.3 for linux
TRAC python24 支持pysqlite-2.4.1.win32-py2.4.exe
pysqlite-2.4.1.win32-py2.5
Python应用编程需要用到...pysqlite是一个sqlite为python 提供的api接口,它让一切对于sqlit的操作都变得异常简单。 从Python2.5起,pysqlite作为Python的一个标准模块。在使用标准库时,它被简称为sqlite3模块。 sqli
资源分类:Python库 所属语言:Python 资源全名:pysqlite3tool-0.0.1a0-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
python sqlite wrapper, python sqlite wrapper only for python
Python标准库包含一个SQLite包装器:使用模块sqlite3实现的PySQLite。 下面是一个操作SQLite数据库的例子:创建表、插入记录、查询记录。 import sqlite3 #创建直接到数据库文件的连接,如果文件不存在则自动创建 ...
宿舍管理系统,含后台管理,含数据库 采用mvc模式,JavaWeb开发,具有很好的参考价值。
用法 生成有限元模型。...如果使用开源软件,例如 OpenSees,可以处理输出文件并将数据保存到pysqlite数据库(参考保存数据到Sqlite.py)。 结果显示。采用pyvista生成静态图和动态图(参考prePostProcess.py)。
pysqlite-2.8.3-cp27-cp27m-win32
数据库虽然不是mysql,但是跟mysql使用一样简单,内有文本说明。有管理员弓能,前台加后台加登录 输入验证码
pysqlite-2.8.3-cp27-cp27m-win_amd64