簡體   English   中英

使用 Python SQLAlchemy 向列添加、刪除和比較值

[英]Adding, removing, and comparing values to column with Python SQLAlchemy

SQLAlchemy 社區,數據庫中的新手,特別是 sqlalchemy 在這里尋求您的幫助。 正如人們所期望的那樣,我的數據庫由行和列組成。 每一行是關於一個獨特的人的信息。 每個人都有多個列(出生日期、姓名、姓氏、以前的登錄日期等)。對於這些列之一(以前的登錄日期),我想在一個單元格中存儲多個值。 換句話說,我希望能夠存儲最后一個,比如說十個登錄日期,並且能夠像在 python 中操作列表一樣操作這些日期。 我希望能夠append新登錄日期到此單元格,從單元格中刪除項目,並訪問單元格的特定索引。 基本上我的手機想要這樣的東西

{"04042020","04052020","04072020"}

我的數據庫看起來像這樣

Name    |   Last Name | Last Log in dates
------------------------------------------------------------
Edgar   |   Allen     |  {"04042020","04052020","04072020"}
Dimitri |  Albertini  |  {"12042019","10112019","01072020"}

我知道 sqlalchemy 有一種將 ARRAYs 與

from sqlalchemy.dialects.postgresql import ARRAY 

經過一番努力,我只能創建一個數組,但我無法找到一種操作(追加、刪除、訪問)數組的方法。 這是一個簡單的原型,它創建了一個只有一列的表,第一行的元素等於 {1,2,3}。

from sqlalchemy import create_engine
from sqlalchemy import Table, Column, Integer, String, MetaData, ForeignKey
from sqlalchemy.dialects.postgresql import ARRAY

engine = create_engine('postgresql://rouzbeh:tiger@localhost/newtable')
metadata = MetaData()
newtable = Table("newtable", metadata,
        Column("data", ARRAY(Integer))
    )
metadata.create_all(engine)
connection = engine.connect()
connection.execute(newtable.insert(),data=[1,2,3])

Postgress postico 中的 Output 類似於以下屏幕截圖。 再次重申,我希望能夠訪問元素( {1,2,3} )並通過刪除或添加元素來操作它們。 ( {1,2,3,4} ) 或 ( {1,2} )

在此處輸入圖像描述

對於類似的用例,我存儲了 JSON 等數據。 看看這個 SO 帖子 這個想法是將 JSON 轉儲為 TEXT(或 JSON object,如果您的數據庫支持此)。

對於更復雜的結構,我使用Marshmallow 它對嵌套結構特別有用。

然而,這種做法是有爭議的 請參閱此 SO 帖子此 Quora 討論 如果您可以忍受缺點,那么這是一種存儲數據的簡單方法。

暫無
暫無

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

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