如何使用Python子进程删除数据库架构?

时间:2019-04-22 09:33:30

标签: python database postgresql subprocess database-schema

我想使用python子进程删除数据库(PostgreSQL)模式。

我想出了这个

subprocess.call(['psql', '-U', DB_USER, DB_NAME, 'drop schema', SCHEMA_NAME, 'cascade'])

但是它给了我这个错误:

psql:警告:多余的命令行参数“ drop schema”被忽略
psql:警告:多余的命令行参数“ demo1”被忽略了
psql:警告:多余的命令行参数“级联”被忽略

1 个答案:

答案 0 :(得分:0)

psql的文档指出该命令通过-c选项作为单个值传递。以下内容使用-d选项,因为psql不允许在位置参数后使用选项,以避免重新排列选项。

subprocess.call(['psql', '-U', DB_USER, '-d', DB_NAME, 
    '-c', ' '.join(['drop schema', SCHEMA_NAME, 'cascade'])])