如何使用SQLAlchemy将整个sql文件执行到数据库中?文件中可以有许多不同的sql查询,包括begin和commit/rollback.
如何使用SQLAlchemy将整个sql文件执行到数据库中?文件中可以有许多不同的sql查询,包括begin和commit/rollback.
不幸的是,我不知道这个问题有一个很好的通用答案.一些dbapi(例如mental copg2)支持一次执行多条语句.如果文件不大,您可以将它们加载到一个字符串中,然后在连接上执行它们.对于其他数据库,我会try 使用该数据库的命令行客户端,并使用子进程模块将数据通过管道传输到该数据库中.
如果这些方法是不可接受的,那么您将不得不继续并实现一个小型SQL解析器,该解析器可以将文件拆分成单独的语句.这真的很难做到100%正确,因为您必须考虑数据库方言特定的文字转义规则、使用的字符集、任何影响文字解析的数据库配置选项(例如,PostgreSQL STANDARD_CONFINGING_STRINGS).
如果你只需要得到99.9%的正确率,那么一些regexp魔法应该能让你在大部分的过程中都做到这一点.