将字符串列表保存到 postgresql 数据库时遇到问题

Having problems with saving a list of strings to postgresql database

我已经为这个问题苦苦挣扎了将近一个小时,但我仍然不知道如何解决它。问题是我必须将字符串列表存储到数据库中,但我不知道如何在不触发错误的情况下执行此操作,因为它说语法错误,你能帮我吗?这是代码。

def filter_info(self):
    patrimonio1 = {"conto_corrente": self.conto_corrente.active,
                   "azioni": self.azioni.active,
                   "obbligazioni": self.obbligazioni.active,
                   "autovetture": self.autovetture.active,
                   "polizze": self.polizze.active,
                   "terreni": self.terreni.active}
    patrimonio = [k for k, v in patrimonio1.items() if v]
    return patrimonio

def save_info(self):
    with ps.connect(dbname=DB_NAME, user=DB_USER, password=DB_PASS, host=DB_HOST) as conn:
        with conn.cursor() as cur:
            patrimonio = self.filter_info()

            with open('account_email.txt', 'r') as f:
                email = f.readline()
                cur.execute(f'''SELECT patrimonio from "'{email}'" WHERE "email" = '{email}' ''')
                cur.execute(f"""UPDATE "'{email}'"
                                SET patrimonio = '''{patrimonio}'''
                                WHERE "email" = '{email}';""")

好的,我在发布这个问题后 2 分钟找到了最简单的解决方案。

所以当我编写这段代码时,我没有想出一个存储字符串列表的解决方案,因为它在列表内外的引号方面存在问题,但我后来认为我只是可以使用 filter_info() 函数生成的列表并将其连接成一个字符串。

这是旧代码:

cur.execute(f"""UPDATE "'{email}'"
                SET patrimonio = '''{patrimonio}'''
                WHERE "email" = '{email}';""")

这是新代码:

cur.execute(f'''UPDATE "'{email}'"
                SET patrimonio = '{", ".join(patrimonio)}'
                WHERE "email" = '{email}';''')

我尝试了很多次新代码,它总是很有魅力,唯一的问题是你不会在数据库中有一个列表,但你总是可以 split() 将字符串放入一个列表。