进程注册中数据库 sqlite3 的唯一值



我有一个sqlite3数据库用户.db其中表有命名用户,表有2行:登录名和密码。

users.db
users:
login | password
name 1|
name 2|
etc...... |

我需要通过键盘输入数据,如果数据库中存在此数据,请再次询问输入数据。

Python 2.6 示例:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sqlite3 as db
#регистрация
print "reg for reg or enter your name"
_id = raw_input()
if _id == 'reg':
    name = raw_input("Choose your name: ")
    conn = db.connect('users.db')
    c = conn.cursor()
    player = c.execute("SELECT count(*) FROM users WHERE users.login=?", (name,))
    #print player
    if player == True:
        print 'user exists'

问题:这在 dabase 中找不到用户名,但用户名存在于数据库中:[(u'serg',), (u'sava',), ....]

c.execute() 不返回结果。您需要显式提取行。您这里只有一行(计数),因此请使用.fetchone()

c.execute("SELECT count(*) FROM users WHERE users.login=?", (name,))
playercount = c.fetchone()
if playercount[0]:
    print 'user exists'

最新更新