python - 无法从数据库记录中读取sqlite3 python
问题描述
这是我第一次使用 sqlite3 并且我正在使用数据库。我正在制作一个在线井字游戏,这样我就可以和我的朋友一起玩。在def dataRead():
我试图读取用户从注册窗口输入的数据,并试图检查数据是否已经保存在数据库中。如果是,用户必须输入另一个用户名。
def register():
##initialising sqlite
con = sqlite3.connect("userData.db")
c = con.cursor()
def submit():
#creating tables in the database
def createTable():
c.execute("CREATE TABLE IF NOT EXISTS userInfo(username TEXT, password TEXT)")
def dataRead():
username = user.get()
password = pword.get()
c.execute("SELECT username FROM userInfo")
data = c.fetchall()
try:
for row in data:
if row == username:
Label(regWin, text = "Sorry, username already in use...\nTry another one.", fg = "red").pack()
print(data)
else:
dataEntry(username, password)
except TypeError:
dataEntry(username, password)
def dataEntry(username, password):
c.execute("INSERT INTO userInfo(username, password) VALUES (?, ?)", (username, password))
con.commit()
createTable()
dataRead()
我尝试使用c.fetchall()
读取username
in的记录userInfo
,以便程序可以检查用户名是否可用,但它似乎不起作用(至少对我而言)。
解决方案
fetchall方法返回一个元组列表,无论选择一列还是多列。因此,这里的比较if row == username:
永远不会成立。如果你想要元组的第一个元素,它是通常的,即row[0]
.
推荐阅读
- c - 在linux内核的系统调用中找不到pid
- python - 如何使用 gensim keyedvectors 找到两个给定单词之间的连接词?
- c++ - CLI/C++ dataGridView 示例 - 设置组合框单元格列表的索引
- python - numpy 中的 QuiRk - 使用反射器在 QR 分解中将所有归一化元素分配为 0
- c++ - unique_ptr 双重删除错误消息
- java - 如何调用具有通过它的变量的方法?
- c - 为什么这个函数有分段错误?
- google-calendar-api - 如何在没有网络服务器的情况下在我的本地主机起始页上显示私人 Google 日历事件?
- azure - azure 服务主体名称是否需要是唯一的租户范围或订阅范围?
- 3d - 正交投影和 BSP-tree 从后到前渲染对象