[转]Python_For_SQLite—利用Python实现SQLite数据库的批量合并

SQLite是移动端常用的地理数据库文件格式,Python是语法简洁清晰,又有Esri的ArcPy加持,在处理地理数据中具有很好的应用空间。用Python处理SQLite数据库是一个很有实用价值的课题,本次尝试以批量数据库合并为契机,整理该部分的相关基础知识。

知识要点如下:

  • A.对SQLite数据库的操作属于Python标准库,直接引用sqlite3即可;
  • B.使用Python对数据库中Data的操控,分为几步:
    a)Sqlite3的connect方法连接到数据库文件;
    b)在连接上创建一个cursor游标;
    c)利用游标的execute方法实现sql语句;
    d)若是返回数据的sql语句,需要接下来用游标的fetchone/fetchall方法拿到数据;
    e)对数据的update不会直接生效,需要在连接上用commit方法提交;
    f)最后关闭连接。
  • C.合并过程的数据文件控制,需要利用到os标准库中的walk方法,实现数据遍历;
  • D.合并过程对数据库内部结构的控制,一方面需要用到sqlite数据库内建表sqlite_master,它是一个系统表,它包含数据库中所有表、视图、索引和触发器的信息,这里最需要用到该表内type字段中为table的信息,它可以返回了全部table的基本信息,进一步通过PRAGMA table_info(catalog) 得到具体表格的字段信息。
#coding=utf-8
import sys,sqlite3,os
db3_paths=r"C:\测试数据数据"       #待处理db3文件所在目录
db3_path=unicode(db3_paths,'utf-8')
including_subs = True#是否处理子文件
db3_extension_name='db3'#配合待合并的sqlite3数据库扩展名
n=0
def append_data(con_current_data,con_des_data,tables_current_data):
    #把当前数据库的链接、目标数据库的链接、当前数据库的table列表同时传入
    print '\n'+ db3list[i] + ' is Beginning !'
    m=0
    cur_current_data=con_current_data.cursor()
    cur_des_data=con_des_data.cursor()
    while m0:
                while n

补充说明—本次数据库合并,设定了一些用以简化合并过程的限制条件:
①不同数据库文件中,相同名称的table具有相同的数据结构;
②忽略了【主键】、【外键】等数据库特性
③更没有涉及sqlite3数据库的高级概念和特性
reference article:
http://blog.sina.com.cn/s/blog_3f6643ee0102wv96.html

你可能感兴趣的:([转]Python_For_SQLite—利用Python实现SQLite数据库的批量合并)