如何解决是否可以使用 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 举报,一经查实,本站将立刻删除。