是否可以使用 sqlalchemy 从 sql 转储文件创建表?

问题描述

我有一个包含一张表(比如商店)的数据库。我在我的模型中反映了这个数据库,并从那里开始使用它。在我的代码中,我只从这个表中读取。我使用 sqlalchemy declarative_base 在模型文件中创建了一些其他表。它按预期运行良好。在我的自动化测试中,我想复制这个数据库并使用它。不同之处在于我还在测试中写入“商店”表以创建模拟值。然后我在测试运行结束时删除数据库。我希望能够在测试开始时重新创建表。使用 Metadata.create_all() 只会在 declarative_base 中创建表。由于该表被反映并且我有创建该表的数据库转储文件,我如何在我的测试设置文件中的数据库中创建“存储”表。我尝试创建一个 sqlalchemy 连接并将从转储文件生成sql 传递到执行方法中,如下所示:

from sqlalchemy import create_engine
engine = create_engine("postgres_url")
con = engine.connect()
file = open('\path\to\generated\sqldump\file')
file.seek(0)
sql = file.read()
rsql = sql.replace("\n"," ")

con.execute(sql)
con.execute(rsql)

我知道我可以在初始数据库设置时创建数据库并从 psql 运行 sqldump,并且只在每次测试运行后截断表。我认为删除表格并重新创建它们会很好,所以我尝试了上述方法并出错。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)