Python SQLite3备份参数
我是SQLite的新手,不知道如何为数据库创建备份,在一个类似的站点上,我发现了一个关于如何为数据库创建备份的问题,但我在让它工作时遇到了问题 问题是: 代码如下: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
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个参数