zoukankan      html  css  js  c++  java
  • 【sqlite】python备份数据库

    备份整个数据库的方法:

    # coding=utf-8
    import sqlite3
    
    def testBakSqlite():
        conn = sqlite3.connect("sqlite_db_mine/testDB.db")
        with open('testDB.sql.bak','w') as f:
            for line in conn.iterdump():
                data = line + '
    '
                data = data.encode("utf-8")
                f.write(data)
        
    testBakSqlite()

    如果想要备份其中的一个表,没有很好的办法。下面是一些网上的讨论。

    http://stackoverflow.com/questions/6677540/how-do-i-dump-a-single-sqlite3-table-in-python

    You can copy only the single table in an in memory db:

    import sqlite3
    
    def getTableDump(db_file, table_to_dump):
        conn = sqlite3.connect(':memory:')    
        cu = conn.cursor()
        cu.execute("attach database '" + db_file + "' as attached_db")
        cu.execute("select sql from attached_db.sqlite_master "
                   "where type='table' and name='" + table_to_dump + "'")
        sql_create_table = cu.fetchone()[0]
        cu.execute(sql_create_table);
        cu.execute("insert into " + table_to_dump +
                   " select * from attached_db." + table_to_dump)
        conn.commit()
        cu.execute("detach database attached_db")
        return "
    ".join(conn.iterdump())
    
    TABLE_TO_DUMP = 'table_to_dump'
    DB_FILE = 'db_file'
    
    print getTableDump(DB_FILE, TABLE_TO_DUMP)

    Pro: Simplicity and reliability: you don't have to re-write any library method, and you are more assured that the code is compatible with future versions of the sqlite3 module.

    Con: You need to load the whole table in memory, which may or may not be a big deal depending on how big the table is, and how much memory is available.

  • 相关阅读:
    娿
    我不知道啊
    Android怎么把引入的library库工程转换成jar包
    高斯消元入门和简单应用
    数论函数基本知识
    AC自动机入门和简单应用
    FFT和NTT
    同余系基本知识
    虚树学习笔记
    Windows常用快捷键和基本的Dos命令
  • 原文地址:https://www.cnblogs.com/dplearning/p/5982267.html
Copyright © 2011-2022 走看看