Python:从数据库检索列表时出现问题

问题描述 投票:0回答:1

我轻松地创建了一个数据库并向其中插入信息,但无法以正确的方式与数据交互。

#ask pseudonym + password
pseudo = input("Pseudonym? ")
password = input("Password? ")

#create database for name/password
import sqlite3
conn = sqlite3.connect('Accounts_infos') 
c = conn.cursor()
c.execute("CREATE TABLE IF NOT EXISTS accounts_table ([account_name] TEXT, [account_password] TEXT)")
c.execute("SELECT account_name FROM accounts_table")
list_db_name = c.fetchall()
list_db_name = [s.strip('(,)') for s in list_db_name] #trying to get rid of '(,)'
if pseudo not in list_db_name:
    c.execute("INSERT INTO accounts_table (account_name, account_password) VALUES (?, ?)", (pseudo, password))
conn.commit()

它曾经像这样返回 [('exemple1',), ('exemple2',)] 而不是 ['exemple1', 'exemple2'],所以相同的伪代码不匹配。 我查找了如何删除列表元素中的字符并找到了

.replace
,但它在这里不起作用,因为
name
可以包含这些字符。然而,
.strip
似乎是完美的解决方案,所以我添加了
list_db_name = [s.strip('(,)') for s in list_db_name]
,但它返回了
AttributeError: 'tuple' object has no attribute 'strip'
。 它本身工作得很好,但一旦插入这段代码,它就是一个元组。

我可以在

pseudo
字符串中添加“(”和“,)”来匹配,但这会非常恶心。

python sqlite
1个回答
0
投票

就是这个:

list_db_name2=[]
for x in list_db_name:
  list_db_name2.append(x)

然后将

list_db_name2
用于您的用例!

© www.soinside.com 2019 - 2024. All rights reserved.