Python Psycopg执行脚本方法

时间:2018-04-24 15:34:05

标签: python postgresql sqlite psycopg2 python-db-api

sqlite的Python db-api实现有一个方便的方法executioncript()来执行多语句SQL脚本。 它对于数据库创建非常有用。 请参阅sqlite driver documentation

我找不到类似的用于PostgreSQL的Psycopg db-api驱动程序。 Psycopg中是否存在executioncript()?还有其他选择吗?

由于

1 个答案:

答案 0 :(得分:0)

您不需要它 - 单个查询字符串可以包含多个单独的查询。

引自the wire protocol documentation,重点补充:

  

前端向后端发送Query消息,启动一个简单的查询周期。该消息包括以文本字符串表示的SQL命令(或命令)。然后,后端根据查询命令字符串的内容发送一个或多个响应消息,最后发送ReadyForQuery响应消息。 ReadyForQuery通知前端它可以安全地发送新命令。 (前端实际上并不需要在发出另一个命令之前等待ReadyForQuery,但是前端必须负责确定如果先前的命令失败并且已经发出的后续命令成功则会发生什么。)

......以后:

  

由于查询字符串可能包含多个查询(以分号分隔),因此在后端完成处理查询字符串之前可能会有几个此类响应序列。在处理完整个字符串时会发出ReadyForQuery并且后端已准备好接受新的查询字符串。

因此,可以为标准cursor.execute()调用提供以分号分隔的单个查询列表来运行。