簡體   English   中英

使用管道將函數生成的SQL查詢重定向到psql命令

[英]Using pipes to redirect a function-generated SQL query to the psql command

我有一個腳本,可以將SQL查詢生成為文本,例如

...
return "SELECT COUNT(*) FROM important_table" 

然后我要在PostgreSQL數據庫上運行。 我可以這樣做兩行:

python SQLgeneratingScript.py parameters > temp.sql 
psql -f temp.sql -d my_database 

但是似乎我應該能夠用管道將其單行,但是我不知道如何。

python SQLgeneratingScript.py parameters|psql -d my_database

我不知道你為什么不使用像psycopg2這樣的python postgresql連接器,但是如果你想使用Unix命令重定向做你想做的事情,你將不得不在你的代碼中這樣做

...
print "SELECT COUNT(*) FROM important_table"  # or use sys.stdout.write()

如果你運行了這樣的命令,這將在你的文件temp.sql寫入:

python SQLgeneratingScript.py parameters > temp.sql

但我會建議你在python中寫這樣的文件

def generate_sql():
   ...
   return "SELECT COUNT(*) FROM important_table"

with open('temp.sql', 'w') as f
   sql = generate_sql()
   f.write(sql)

或者更多使用psycopg2直接執行你的sql

import psycopg2

def generate_sql():
    ...
    return "SELECT COUNT(*) FROM important_table"

conn = psycopg2.connect("dbname= ...")

cur = conn.cursor()
sql = generate_sql()
cur.execute(sql)

conn.close()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM