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