我轻松地创建了一个数据库并向其中插入信息,但无法以正确的方式与数据交互。
#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
字符串中添加“(”和“,)”来匹配,但这会非常恶心。
就是这个:
list_db_name2=[]
for x in list_db_name:
list_db_name2.append(x)
然后将
list_db_name2
用于您的用例!