如何使用SQLAlchemy将整个sql文件执行到数据库中?文件中可以有许多不同的sql查询,包括begin和commit/rollback.

推荐答案

不幸的是,我不知道这个问题有一个很好的通用答案.一些dbapi(例如mental copg2)支持一次执行多条语句.如果文件不大,您可以将它们加载到一个字符串中,然后在连接上执行它们.对于其他数据库,我会try 使用该数据库的命令行客户端,并使用子进程模块将数据通过管道传输到该数据库中.

如果这些方法是不可接受的,那么您将不得不继续并实现一个小型SQL解析器,该解析器可以将文件拆分成单独的语句.这真的很难做到100%正确,因为您必须考虑数据库方言特定的文字转义规则、使用的字符集、任何影响文字解析的数据库配置选项(例如,PostgreSQL STANDARD_CONFINGING_STRINGS).

如果你只需要得到99.9%的正确率,那么一些regexp魔法应该能让你在大部分的过程中都做到这一点.

Database相关问答推荐

如何限制报表中返回的行数?

嵌入式的 best数据库是什么?

我如何知道 DynamoDB 表分布在多少个分区上?

Mongodb聚合$group,限制数组长度

Spring DriverManagerDataSource vs apache BasicDataSource

Postgresql:优化数字字段的列大小

单元测试:用于测试的数据库设置

如何将 MySQL 5.5.40 升级到 MySQL 5.7

存储所有排列的模式数据库

如何在 2 个 MySQL 数据库之间传输数据?

我可以在没有数据源的情况下配置 Grails 吗?

使用 typeORM 搜索早于日期的数据

删除 PHP 中的所有小数

如何将 SQL Server 数据库图表迁移到另一个数据库?

PHP 可以与 MS SQL 数据库一起使用吗

使用 C3P0 的 JDBC 连接池

SQL - 如何使用 MS SQL 2008 R2 备份数据库并导出为 MDF 文件

有哪些不同类型的索引,每种索引的好处是什么?

最小覆盖和功能依赖

归一化 - 2NF 与 3NF