一個項目是否有一個乾淨的方式從psycopg2
DictRow
對象中刪除的項目(包括它的價值和指數)?刪除DictRow
我使用psycopg2
使用兩個不同的PostgreSQL數據庫進行交互。我想記錄從一個數據庫複製爲DictRow其他 - 和我想將它們插入前刪除一對夫婦從記錄的字段。
舉例來說,如果我有一個名爲DictRow row
:
>>> print row
[12, '2015-12-31', 'kefir sriracha put a bird on it']
>>> print row.keys()
['id', 'created_at', 'output_example']
使用row.pop(INDEX)
更改列表的索引,所以儲存在row._index
屬性鍵不再正確!
>>> row.pop(0)
12
>>> print row
['2015-12-31', 'kefir sriracha put a bird on it']
>>> print row.keys()
['id', 'created_at', 'output_example']
>>> print row['id']
'2015-12-31' # GAAAAA!!!
不能使用使用del row['id']
:TypeError
。我認爲這是因爲底層對象是list
並且期望一個整數索引。
我目前的解決辦法是做這樣的事情,這似乎不雅:
fields = [f for f in row.keys() if f != 'id']
values = [v for k, v in row.iteritems() if k != 'id']
任何建議從DictRow刪除項目的更直接的方式?
你如何使用row.keys()?是不是「行」列表中的例子? – kmario23
它看起來像一個完全錯誤的方法。你能解釋一下爲什麼你需要去Python的旅程並回到Postgresql? –
@ kmario23:這是根據列表中的對象,但它是一個'DictRow':http://initd.org/psycopg/docs/extras.html –