Python SQLite3备份参数

Python SQLite3备份参数,python,sqlite,backup,Python,Sqlite,Backup,我是SQLite的新手,不知道如何为数据库创建备份,在一个类似的站点上,我发现了一个关于如何为数据库创建备份的问题,但我在让它工作时遇到了问题 问题是: 代码如下: from __future__ import print_function from __future__ import unicode_literals import argparse import sqlite3 import shutil import time import os NO_OF_DAYS = 7 def

我是SQLite的新手,不知道如何为数据库创建备份,在一个类似的站点上,我发现了一个关于如何为数据库创建备份的问题,但我在让它工作时遇到了问题

问题是:

代码如下:

from __future__ import print_function
from __future__ import unicode_literals

import argparse
import sqlite3
import shutil
import time
import os

NO_OF_DAYS = 7

def sqlite3_backup(dbfile, backupdir):

dbfile = Accounts.db
backupdir = r"E:\TESTING\BackUp.db"
"""Create timestamped database copy"""

if not os.path.isdir(backupdir):
    raise Exception("Backup directory does not exist: {}".format(backupdir))

backup_file = r"E:\TESTING\BackUp.db" + time.strftime("-%Y%m%d-%H%M%S")

connection = sqlite3.connect(r"E:\TESTING\Accounts.db")
cursor = connection.cursor()

# Lock database before making a backup
cursor.execute('begin immediate')
# Make new backup file
shutil.copyfile(dbfile, backup_file)
print ("\nCreating {}...".format(backup_file))
# Unlock database
connection.rollback()

def clean_data(backup_dir):

backup_dir = r"E:\TESTING\BackUp.db"

print ("\n------------------------------")
print ("Cleaning up old backups")

for filename in os.listdir(backup_dir):
    backup_file = os.path.join(backup_dir, filename)
    if os.stat(backup_file).st_ctime < (time.time() - NO_OF_DAYS * 86400):
        if os.path.isfile(backup_file):
            os.remove(backup_file)
            print ("Deleting {}...".format(ibackup_file))

def get_arguments():
##    connection = sqlite3.connect(r"E:\TESTING\Accounts.db")
##    cursor = connection.cursor()
backup_dir = r"E:\TESTING\BackUp.db"
db_file = sqlite3.connect(r"E:\TESTING\Accounts.db")
"""Parse the commandline arguments from the user"""

parser = argparse.ArgumentParser()
parser.add_argument('db_file',
                    help='the database file that needs backed up')
parser.add_argument('backup_dir',
                     help='the directory where the backup'
                          'file should be saved')
return parser.parse_args()

if __name__ == "__main__":
#args = get_arguments()
dbfile = Accounts
backup_dir = "E:\TESTING"
#sqlite3_backup(args.db_file, args.backup_dir)
sqlite3_backup(db_file, backup_dir)
clean_data(args.backup_dir)

print ("\nBackup update has been successful.")
from\uuuuu future\uuuuu导入打印功能
从未来导入unicode文字
导入argparse
导入sqlite3
进口舒蒂尔
导入时间
导入操作系统
无天数=7天
def sqlite3_备份(dbfile,backupdir):
dbfile=Accounts.db
backupdir=r“E:\TESTING\BackUp.db”
“”“创建带时间戳的数据库副本”“”
如果不是os.path.isdir(backupdir):
引发异常(“备份目录不存在:{}”。格式(backupdir))
备份\u文件=r“E:\TESTING\backup.db”+time.strftime(“-%Y%m%d-%H%m%S”)
connection=sqlite3.connect(r“E:\TESTING\Accounts.db”)
cursor=connection.cursor()
#在进行备份之前锁定数据库
cursor.execute('beginimmediate')
#创建新的备份文件
copyfile(dbfile,backup\u文件)
打印(“\n正在创建{}…”格式(备份文件))
#解锁数据库
连接。回滚()
def清除数据(备份目录):
backup\u dir=r“E:\TESTING\backup.db”
打印(“\n------------------------------”)
打印(“清理旧备份”)
对于os.listdir(备份目录)中的文件名:
backup\u file=os.path.join(backup\u dir,文件名)
如果os.stat(备份文件).st\u-ctime<(time.time()-无天数*86400):
如果os.path.isfile(备份文件):
删除操作系统(备份文件)
打印(“删除{}…”格式(ibackup_文件))
def get_参数():
##connection=sqlite3.connect(r“E:\TESTING\Accounts.db”)
##cursor=connection.cursor()
backup\u dir=r“E:\TESTING\backup.db”
db_file=sqlite3.connect(r“E:\TESTING\Accounts.db”)
“”“分析来自用户的命令行参数”“”
parser=argparse.ArgumentParser()
parser.add_参数('db_文件',
help='需要备份的数据库文件')
parser.add_参数('backup_dir',
help='备份所在的目录'
'应保存文件')
返回parser.parse_args()
如果名称=“\uuuuu main\uuuuuuuu”:
#args=get_参数()
dbfile=帐户
备份\u dir=“E:\TESTING”
#sqlite3_备份(args.db_文件,args.backup_目录)
sqlite3_备份(db_文件,备份目录)
清除数据(args.backup\u dir)
打印(“\n备份更新已成功。”)
当我运行代码时,会出现以下错误
用法:backup.py[-h]db\u file backup\u dir
backup.py:错误:需要以下参数:db\u file,backup\u dir


我已经在代码中加入了db_文件和backup_dir,但它仍然出现相同的错误

您可能需要更改此部分:

if __name__ == "__main__":
    #args = get_arguments()
    dbfile = <<YOUR DB FILE NAME >>
    backup_dir = <<YOUR BACK UP DIRECTORY PATH>>
    #sqlite3_backup(args.db_file, args.backup_dir)
    sqlite3_backup(db_file, backup_dir)
    # CHANGE  clean_data(args.backup_dir)
    #TO: 
    clean_data(backup_dir)
    print ("\nBackup update has been successful.")
如果名称=“\uuuuu main\uuuuuuuu”:
#args=get_参数()
数据库文件=
备份目录=
#sqlite3_备份(args.db_文件,args.backup_目录)
sqlite3_备份(db_文件,备份目录)
#更改清除数据(args.backup\u dir)
#致:
清除数据(备份目录)
打印(“\n备份更新已成功。”)

该脚本除了创建数据库文件的副本外,什么都没有做。它需要2个参数我理解,但不知道当文件是函数中的参数时如何附加文件。Accounts.db和Accounts中缺少引号(为什么它们不同,为什么在备份功能中用另一个覆盖它们?。它们不是字符串吗?请检查代码缩进。出现的错误是`dbfile=Accounts NameError:name'Accounts'未定义`能否在问题中发布完整的代码。因此,我可以提供帮助。