本文参考了以下博客,并对苏宝宝表示感谢
https://blog.youkuaiyun.com/qq_42231605/article/details/83094604
本文需要的知识:
python语言,navicate的简单使用,sql语言的简单使用,mysql库的简单使用,在尝试运行的时候可能会遇到很多问题,不过查阅一些资料就可以解决。
1
在navicate中创建连接,创建数据库命名为newsdatabase,创建两个表key_1和user_1,其中user_1可以为空,它是存储已经注册过的用户,而key_1则是起到注册码的作用,不能为空。其余问题已写在注释中。syzt应为看注册码是否被使用的判断属性。


import pymysql
db = pymysql.connect("localhost","root","123456","newsdatabase" ) #直接连入newdatabase库
#我不清楚此处的newdatabase是mysql连接的意思还是数据库的名字,反正我都写错了,试一下
'''毫无疑问这个代码是正确的唯一的问题就是它适合不适合套到我的电脑上
首先我需要建立数据库,中间建立表
root是用户名,subao666是用户密码,做的时候出错了,我的密码是123456,newdaabase是数据库的名字,这些都是需要我去创建的'''
cur = db.cursor() #获取游标
print('**************开始注册')
user1 = str(input('请输入账号:'))
password1 = str(input('请输入密码:'))
key1 = str(input('请输入注册码:'))
#use1,password1,key1这些都是我需要去设置的属性,我理解错了这不是我要输入的属性,这是运行代码后我要注册的账号密码,就是注册码我现在有点搞不明白
sql = """select * from key_1 where key_num = %s"""
'''sql语言中的%s是什么,查询所有的内容,从key_d这个表中查取,可我没这个表啊
我的表是key_1可能就是这出问题了。%s在此处是通配符的意思,理论上是要匹配所有以s结尾的字符我猜测是要匹配所有的字符。'''
aa = cur.execute(sql,(key1))#cur是一类方法的总称,它在此处是查询的意思,是看sql语句查询出的结果与注册码是否相同,并对此做出判断
#那在我的表里面,注册码只有一个那就是123451
#这真是有点搞不懂了,在别人的代码里面,此处的key1是用中括号的,我的就改成圆括号才行,奇怪。
db.commit()
if aa==1:#此处的aa我感觉不知道是啥意思,我现在知道了
sql = """select * from key_1 where (key_num = %s) and (syzt = 1)"""
aa = cur.execute(sql, [key1])
db.commit()
if aa == 1:
#判断用户名是否已被注册
sql = """select * from user_1 where username = %s"""
aa = cur.execute(sql, [user1])#原来user_1表的意义是这个,判断表里面的用户是否已经被注册了
db.commit()
if aa == 1:
print("用户名已存在,请重新注册")
else:
# 开始执行注册,加入用户数据到表中,且将该注册码标记为已使用状态:0
sql = """insert into user_1(username,userpassword,zhucekey) values (%s,%s,%s)"""
cur.execute(sql, [user1, password1, key1])
db.commit()
sql = """update key_1 set syzt = 0 where key_num = %s"""
cur.execute(sql, [key1])
db.commit()
print("注册成功")
else:
print("注册码已使用\n注册失败")
else:
print("注册码不存在");
db.close()
#我需要知道如何用navicate正确的创建一个我想要的数据库
5942



被折叠的 条评论
为什么被折叠?



