我想在测试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