この質問に基づいて、fabricコマンドを使用してpostgresqlデータベース内のすべてのテーブルを削除しようとしています。私が実行しようとしているbashコマンドは
#!/bin/bash
TABLES=`psql $PGDB -t --command "SELECT string_agg(table_name, ',') FROM information_schema.tables WHERE table_schema='public'"`
echo Dropping tables:${TABLES}
psql $PGDB --command "DROP TABLE IF EXISTS ${TABLES} CASCADE"
私のfabスクリプト内では次のようになります。
def delete_tables():
the_command = "SELECT string_agg(table_name, ',') FROM information_schema.tables WHERE table_schema='public'"
run("TABLES=`psql -U db_user -d db_name $PGDB -t --command %s`" % the_command)
しかし、エラーは、Peer authentication failed for user "string_agg"
です。これは、コマンドが ""の間のコマンドではなく、長い単一の文字列と見なされることを示しているようです。
私は変換を試みました:
'
に 変換しまし'\''
たが、運がありません。どんな提案でも大歓迎です。