python - 如何使用 Python Subprocess 删除数据库模式?
问题描述
我想使用 python 子进程删除数据库(PostgreSQL)模式。
我想出了这个:
subprocess.call(['psql', '-U', DB_USER, DB_NAME, 'drop schema', SCHEMA_NAME, 'cascade'])
但它给了我这个错误:
psql:警告:额外的命令行参数“drop schema”被忽略
psql:警告:额外的命令行参数“demo1”被忽略
psql:警告:额外的命令行参数“cascade”被忽略
解决方案
psql 的文档指出该命令是通过 -c 选项作为单个值传递的。以下使用 -d 选项,因为 psql 不允许在位置参数之后使用选项,以避免重新排序选项。
subprocess.call(['psql', '-U', DB_USER, '-d', DB_NAME,
'-c', ' '.join(['drop schema', SCHEMA_NAME, 'cascade'])])
推荐阅读
- android - 模拟器:警告:QXcbIntegration
- sublimetext3 - 如何使用 HomeBrew 升级木桶
- javascript - Node.js:带/不带 Promise 的异步等待
- android - kotlin 中的一个 RecyclerView 中有两个 ArrarList
- java - 如果方法使用引发异常的方法,如何正确捕获异常
- python-3.x - Paylocity API 访问令牌
- java - RxJava2 - .blockingFirst() 未收到任何事件
- javascript - 这个生成器如何返回 3?
- vuejs2 - Vuetify 图标显示不正确:它们显示为“$vuetify.icons...”
- azure-sql-database - Azure SQL Server 与表存储性能对比