1
我試圖在python項目dedupe中使用示例保存數據。嘗試將數據插入數據庫時,我所得到的錯誤是最後的結果。Postgres mogrify將二進制文件添加到SQL字符串
我得到的錯誤是:
Traceback (most recent call last):
File "dedupe_orgs.py", line 11, in <module>
main()
File "dedupe_orgs.py", line 7, in main
entity.dedupe_orgs()
File "/orgs.py", line 183, in dedupe_orgs
c2.execute("INSERT INTO entity_organization %s VALUES %s" % (values, args_str))
psycopg2.ProgrammingError: syntax error at or near "b"
LINE 1: ...d,id,name,created_on,updated_on,entity_id) VALUES b"(0,65,'S...
這是相關代碼:
num_cols = len(column_names)
mog = "(" + ("%s," * (num_cols - 1)) + "%s)"
args_str = ','.join(c2.mogrify(mog, x) for x in full_data)
values = "(" + ','.join(x for x in column_names) + ")"
c2.execute("INSERT INTO entity_organization %s VALUES %s" % (values, args_str))
con2.commit()
con2.close()
con.close()
我相信這個問題是寫在Python 2中的例子,但我使用Python 3.如何我可以解決錯誤,所以'b'不會添加到每個查詢,防止數據保存?
這不能回答你的問題,但是,如果你打算在Python代碼中與postgres數據庫進行交互,我強烈建議sqlalchemy。它避免了這樣的錯誤,因爲你應該幾乎永遠不會寫入原始的sql代碼。 – melchoir55
@ melchoir55我實際上在其他方面使用sqlalchemy,但在將它轉換爲之前試圖讓這個例子工作。也許我應該現在就試試。 – Casey
好吧,我切換到sqlalchemy,現在一切都變得更好了。 – Casey