如果你想在一個postgresql數據庫的表中使用python操作數據(可能使用scipy對結果集進行一些分析),然後想要將數據導出到另一個表中數據庫,你將如何去執行?Python和Postgresql
是唯一/最好的方法來做到這一點,只需要運行查詢,讓python將它存儲在數組中,在python中操作數組,然後運行另一個sql語句輸出到數據庫?
我真的只是問,有沒有更有效的方法來處理數據?
感謝, 伊恩
如果你想在一個postgresql數據庫的表中使用python操作數據(可能使用scipy對結果集進行一些分析),然後想要將數據導出到另一個表中數據庫,你將如何去執行?Python和Postgresql
是唯一/最好的方法來做到這一點,只需要運行查詢,讓python將它存儲在數組中,在python中操作數組,然後運行另一個sql語句輸出到數據庫?
我真的只是問,有沒有更有效的方法來處理數據?
感謝, 伊恩
你可以使用PL/Python來寫一個PostgreSQL函數來處理數據。
http://www.postgresql.org/docs/current/static/plpython.html
雖然TBH我認爲這是大同小異的相比,在外部客戶端處理它在大多數情況下。
我會考慮使用http://www.sqlalchemy.org/。
SQLAlchemy是Python SQL工具包和對象關係映射器,爲應用程序開發人員提供了SQL的全部功能和靈活性。
它支持Postgres的,太 - http://www.sqlalchemy.org/docs/05/reference/dialects/postgres.html
我不知道我明白你的意思,但我會說這聽起來很像
INSERT INTO anothertable SELECT stuff FROM the_table RETURNING *
,然後在返回的行工作。當然,如果你不想在操作數據時修改數據。
您可以使用ORM(例如SQLAlchemy)將數據檢索到「對象」中,並操作該對象。這樣的實現可能比僅僅使用數組更優雅。
我同意SQL鍊金術的建議或使用Django的ORM。您的需求似乎很容易使用PL/Python。
是這樣做是爲了 只需運行查詢的唯一/最好的方法,有蟒蛇 商店它在一個陣列,操縱在Python中 數組,然後運行另一個 sql語句輸出到 數據庫?
不是唯一的辦法(見其他答案),但恕我直言,最好的,當然也是最簡單的。它只需要一個PostgreSQL librray(我使用psycopg)。標準接口記錄在PEP 249中。
與psycopg一個SELECT
的例子:
cursor.execute("SELECT * FROM students WHERE name=%(name)s;",
globals())
和INSERT
:
cursor.execute("INSERT INTO Foobar (t, i) VALUES (%s, %s)",
["I like Python", 42])
pgnumpy似乎是你在找什麼。