进程注册中DB sqlite3的唯一值

时间:2013-10-16 08:33:44

标签: python sqlite unique registration

我有一个sqlite3数据库users.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'

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

1 个答案:

答案 0 :(得分:0)

c.execute()不会返回结果。您需要显式获取行。这里只有一行(一个计数)所以请使用.fetchone()

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