使用Python SQLAlchemy向列添加、删除和比较值

2024-04-26 22:03:09 发布

您现在位置:Python中文网/ 问答频道 /正文

SQLAlchemy社区,一个数据库中的noob,特别是SQLAlchemy正在这里寻求您的帮助。正如人们所期望的,我的数据库由行和列组成。每一行都是关于一个独特的人的信息。每个人都有多个列(出生日期、姓名、姓氏、以前的登录日期等)。对于其中一个列(以前的登录日期),我希望在单个单元格中存储多个值。换句话说,我希望能够存储最后一个(比如说十个)登录日期,并能够像处理python中的列表一样处理这些日期。我希望能够将新的登录日期添加到此单元格,从单元格中删除项目,并访问单元格的特定索引。基本上我的手机会像这样

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

我的数据库是这样的

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

我知道sqlalchemy有一种将数组与

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 Postco中的输出如下图所示。再次重申,我希望能够访问元素({1,2,3}),并通过移除或添加元素来操作它们。({1,2,3,4})或({1,2}

enter image description here


Tags: namefromimport数据库元素sqlalchemypostgresqlcreate
1条回答
网友
1楼 · 发布于 2024-04-26 22:03:09

对于类似的用例,我将这些数据存储为JSON。签出this SO post。其思想是将JSON转储为文本(或者JSON对象,如果您的数据库支持的话)

对于更复杂的结构,我使用Marshmallow。它对于嵌套结构特别有用

然而,这种方法是有争议的。见this SO postin this Quora discussion。如果你能忍受不利因素,这是一种存储数据的简单方法

相关问题 更多 >