使用sqlalchemy将sqlite数据库复制到内存中,用于测试flask应用程序



我想在测试flask应用程序期间使用我的开发数据库(它包含我在测试期间无法获得的oauth令牌(。我希望能够将基于磁盘的开发数据库复制到内存中,并将其用于测试,这样它就不会改变开发数据库。

以下是我迄今为止所做的:

在我的应用程序中,当选择测试时使用:

SQLALCHEMY_DATABASE_URI = "sqlite:///:memory:"

现在,我希望将我现有的数据库复制到这个基于临时内存的数据库中。我已经搜索了其他答案,但最接近的答案是:

# open existing db
old_db = sqlite3.connect('app.db')
# get the connection to the in memory db
connection = db.get_engine().raw_connection()
# copy old_db into memory
old_db.backup(connection)

但这会导致

backup() argument 1 must be sqlite3.Connection, not _ConnectionFairy

有没有办法利用这样的联系来实现我想要的目标?

谢谢

Martyn

如果有其他人提到这一点,我错过了什么-raw_connection((对象需要通过以下方式转换为sqlite连接:

connection = db.get_engine().raw_connection().connection

这是完整的代码:

# open existing db
old_db = sqlite3.connect('app.db')
# get the connection to the in memory db
conn = db.get_engine().raw_connection().connection
# copy old_db into memory
old_db.backup(conn)

Martyn

最新更新