Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ';sqlite3.连接';对象没有属性';备份';_Python_Python 3.x_Sqlite_Anaconda - Fatal编程技术网

Python ';sqlite3.连接';对象没有属性';备份';

Python ';sqlite3.连接';对象没有属性';备份';,python,python-3.x,sqlite,anaconda,Python,Python 3.x,Sqlite,Anaconda,我有一个将数据从Microsoft Access数据库迁移到本地sqlite数据库的程序。它在32位Miniconda安装上运行,而不是我通常使用的64位版本,因为访问版本是32位的。今天早上,我的IT部门移动了anaconda的一些程序文件后,我重新安装了32位的miniconda安装。干净的安装似乎工作正常,但当我尝试备份sqlite数据库时,我收到了一条奇怪的错误消息 调用sqlite3.Connection.backup会引发以下错误:“sqlite3.Connection”对象没有属性

我有一个将数据从Microsoft Access数据库迁移到本地sqlite数据库的程序。它在32位Miniconda安装上运行,而不是我通常使用的64位版本,因为访问版本是32位的。今天早上,我的IT部门移动了anaconda的一些程序文件后,我重新安装了32位的miniconda安装。干净的安装似乎工作正常,但当我尝试备份sqlite数据库时,我收到了一条奇怪的错误消息

调用
sqlite3.Connection.backup
会引发以下错误:
“sqlite3.Connection”对象没有属性“backup”

当然,除了
sqlite3.Connection
对象有一个名为
backup
的属性之外

而且,更奇怪的是,该文件正在备份。我可以看到正在创建一个新文件,但它仍然抛出此错误

下面是导致错误的代码的简化版本:

我有一个名为
db
的模块,其中包含用于连接到我拥有的两个数据库的类:

class SQL:
    def __init__(self, alt_path=None):
        if not alt_path:
            pdir = Path("C:\\path\to\default\project\directory")
            dbdir = pdir / "Data" / "db" / "SQL"
            sql_path = dbdir / "jjp.db"
            self.conn = sqlite3.connect(sql_path.as_posix())
        else:
            self.conn = sqlite3.connect(alt_path.as_posix())
        self.cursor = self.conn.cursor()
        self.table_names = [
            table[0]
            for table in self.cursor.execute(
                "SELECT name FROM sqlite_master WHERE type = 'table'"
            )
        ]

    def backup(self, backup_con):
        self.conn.backup(backup_con, pages=0)
        backup_con.close()

    def close(self):
        self.conn.close()
我正在一个名为
backup
的模块中导入这些类:

from jjp import db


def create_backup_con(db_type):
    today = datetime.today().strftime("%Y%m%d%H%M%S")
    if db_type == "sql":
        db_file = sql_backup_dir / f"jjp_backup_{today}.db"
        conn = sqlite3.connect(db_file.as_posix())
        return conn
    elif db_type == "access":
        db_file = acc_backup_dir / f"jjp_backup_{today}.accdb"
        return db_file


def backup_sql():
    sql = db.SQL()
    bck = create_backup_con("sql")
    sql.backup(backup_con=bck)
    bck.close()
    sql.close()
以下是完整的错误消息输出:

backup.backup_sql()

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
 in 
----> 1 backup.backup_sql()

c:\users\path\to\backup.py in backup_sql()
     38     sql = db.SQL()
     39     bck = create_backup_con("sql")
---> 40     sql.backup(backup_con=bck)
     41     bck.close()
     42     sql.close()

c:\users\path\to\db.py in backup(self, backup_con)
    159         """
    160 
--> 161         self.conn.backup(backup_con, pages=0)
    162         backup_con.close()
    163 

AttributeError: 'sqlite3.Connection' object has no attribute 'backup'
在运行Windows 10的64位计算机上运行python 3.6.10 32位miniconda发行版

运行python 3.6.10

据介绍,Python3.7中添加了对sqlite备份功能的支持。事实上,如果您查看,您将看到缺少对该方法的描述


您必须使用较新的Python版本或找到不同的方法。如果使用sqlite 3.27或更高版本,可能会这样做。

谢谢。我想当我在安装之后创建一个新的env时,我只是意外地键入了
python=3.6
,而不是
python=3.7
,所以我甚至没有意识到它。