【发布时间】:2020-11-01 07:08:54
【问题描述】:
我要做的是获取电子邮件 ID 并与 SQLite 表进行比较。
如果表中存在电子邮件,则我使用电子邮件 ID 和随机生成的密码更新表并邮寄它们。
如果表中不存在电子邮件不,那么我使用插入查询将电子邮件以及随机生成的密码输入到表中。
在插入或更新查询被触发后,我使用 Flask-mail 将生成的密码邮寄给他们
但是我无法执行它
def sqliteconfig():
try:
conn = sqlite3.connect('auth.db',check_same_thread=False)
cur = conn.cursor()
conn.execute('CREATE TABLE IF NOT EXISTS auth (AID INTEGER PRIMARY KEY AUTOINCREMENT, emailid TEXT UNIQUE, otp TEXT, created_at TEXT DEFAULT CURRENT_TIMESTAMP)')
cur.close()
except Exception as e:
print(e)
return 'DatabaseDown'
# return 'DatabaseDown'
return conn
@bp.route('/')
def index_redirect():
return redirect(url_for('devcon.login'))
@bp.route('/login',methods=['GET','POST'])
def login():
conn = sqliteconfig()
cur = conn.cursor()
if request.method == 'POST':
emailid = request.form['emailid']
if emailid != "":
s = "abcdefghijklmnopqrstuvwxyz01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ"
passlen = 8
password = "".join(random.sample(s,passlen ))
conn.execute('select count(*) from auth where emailid=(?)',[emailid])
rows = cur.fetchall();
if len(rows) == 0:
conn.execute('insert into auth(email,otp) values(?,?)',[emailid,password])
conn.commit()
elif len(rows)==1:
conn.execute('update auth SET otp=(?) where emailid=(?)',[emailid,password])
conn.commit()
return str(rows)
return render_template("login/login.html")
我正面临的特殊问题是 SELECT COUNT 查询不返回任何内容,并且 INSERT 查询会引发唯一电子邮件 ID 的约束冲突错误。
如果有更好的方法来做到这一点,我很期待
【问题讨论】:
标签: python python-3.x sqlite flask flask-mail