基于pymqsql的动态发布系统。
主要功能有:登录注册、修改密码、发布动态、删除动态、查看动态。
import pymysql
import re
import time
import io
import sys
try:
mydb = pymysql.connect(
host="localhost",
user="root",
password="******"
)
print("连接成功")
except:
print("连接连接失败")
mycursor = mydb.cursor()
mycursor.execute("use dc")
mycursor.execute("CREATE TABLE if not exists user (id INT PRIMARY KEY,user_name varchar(20),password varchar(20))")
mycursor.execute(
"CREATE TABLE if not exists commit_data (id INT,num INT, issure_time varchar(255),c_data varchar(255))")
class System:
pd_login = False
pd_issue = False
up_pwd = False
#存储用户id和发布的动态个数
issue_num_list = [1, 1]
# def __init__(self,pd_login):
# self.login=pd_login
def system1_welcome(self):
print("1,登录")
print("2,注册")
print("3,退出")
self.system()
def system2_welcome(self):
print("欢迎进入发布界面".center(30, "-"))
print("1,修改密码")
print("2,发布动态")
print("3,删除动态")
print("4,查看动态")
print("5,退出")
self.system3()
def system(self):
a = int(input("请输入选项:"))
if a == 1:
self.login()
self.system2()
if a == 2:
self.logon()
if a == 3:
mycursor.close()
mydb.close()
sys.exit(0)
def system2(self):
if self.pd_login == True:
print("登录成功")
self.system2_welcome()
else:
print("登录失败进入主页面--------------")
self.system1_welcome()
def system3(self):
sele = int(input("请输入选项:"))
if sele == 1:
self.update_pwd()
elif sele == 2:
self.issue()
elif sele == 3:
self.del_issue()
elif sele == 4:
self.read_dc()
elif sele == 5:
#退出登录
#把登录状态设置为false
#把用户数据列表都初始化为0
self.pd_login = False
self.issue_num_list[0] = 0
self.issue_num_list[1] = 0
return self.system1_welcome()
def login(self):
print("欢迎进入登录界面")
user_id = input("请输入要用户的id:")
# 该list第一项存id,第二项存该用户存储已发布动态数目
self.issue_num_list[0] = user_id
self.issue_num_list[1] = 0
mycursor.execute("select user_name,password from user where id={}".format(user_id))
db = mycursor.fetchall()
print(db)
db_list = []
# 把数据存到列表中
# 发现db是一个两重元组,第一个元组中才是想要的数据,所以使用两层for循环
for a in db:
for b in a:
db_list.append(b)
break
user_name = input("用户名:")
password = input("密码:")
index = 2
for a in db_list:
if index == 2:
if user_name == a:
index -= 1
self.pd_login = True
continue
else:
break
if index == 1:
if password == a:
self.pd_login = True
else:
self.pd_login = False
return self.pd_login
def logon(self):
print("欢迎来到注册界面")
contin = (int)(input("注册请输入1,退出注册请输入0:"))
if contin == 1:
user_id = input("请选择用户id(输入数字):")
user_name = input("请输入用户名:")
password = input("请输入密码(由3~18位数字、大写小写字母和特殊符号组成):")
result = re.match("^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*\W).{3,18}$", password)
if result:
mycursor.execute(
"INSERT INTO user (id,user_name,password) VALUES ({},'{}','{}')".format(user_id, user_name,
password))
mydb.commit()
print("注册成功,返回登录主页面")
return self.system1_welcome()
else:
print("密码输入格式错误")
self.logon()
else:
return self.system1_welcome()
def update_pwd(self):
# up_pwd_userid = input("请输入要修改密码的用户id:")
up_pwd = input("请输入要修改的密码(由3~18位数字、大写小写字母和特殊符号组成):")
result = re.match("^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*\W).{3,18}$", up_pwd)
if result:
mycursor.execute(
"UPDATE user SET password='{}' WHERE id={}".format(up_pwd, self.issue_num_list[0]))
mydb.commit()
print("密码修改成功!返回登录页面")
self.login()
return self.system2()
else:
print("密码格式错误!请重新注册")
self.update_pwd()
def issue(self):
while True:
issue_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
# id = input("请输入用户id:")
# num = input("请输入第几个动态:")
mycursor.execute(
"SELECT * FROM commit_data WHERE id={}".format(self.issue_num_list[0]))
db = mycursor.fetchall()
for a in db:
print("您发布的第{}条动态,时间:{}\n内容:{}\n".format(a[1], a[2], a[3]))
print("----------------------------------")
self.issue_num_list[1] += 1
c_data = input("发布内容:")
mycursor.execute(
"INSERT INTO commit_data(id,num,issure_time,c_data) VALUES({},{},'{}','{}')".format(
self.issue_num_list[0], self.issue_num_list[1], issue_time,
c_data))
mydb.commit()
pd = (int)(input("输入1继续发布动态,输入0则退出:"))
if pd == 0:
# self.pd_issue = True
# return self.pd_issue
return self.system2()
def del_issue(self):
print("您发布的所有动态:")
mycursor.execute(
"SELECT * FROM commit_data WHERE id={}".format(self.issue_num_list[0]))
db = mycursor.fetchall()
for a in db:
print("您发布的第{}条动态,时间:{}\n内容:{}\n".format(a[1], a[2], a[3]))
print("----------------------------------")
num = input("请输入您要删除的第几个动态:")
mycursor.execute(
"DELETE FROM commit_data WHERE id={} and num={}".format(self.issue_num_list[0], num))
mydb.commit()
print("删除成功!请查看:")
mycursor.execute(
"SELECT * FROM commit_data WHERE id={}".format(self.issue_num_list[0]))
db = mycursor.fetchall()
for a in db:
print("您发布的第{}条动态,时间:{},内容:{}\n".format(a[1], a[2], a[3]))
print("----------------------------------")
pd = (int)(input("输入1继续删除动态,输入0则退出:"))
if pd == 0:
return self.system2()
else:
self.del_issue()
def read_dc(self):
print("----------朋友圈------------")
mycursor.execute(
"SELECT * FROM commit_data")
db = mycursor.fetchall()
for a in db:
print("id为{}的用户,发布的第{}条动态,时间:{}\n内容:{}\n".format(a[0], a[1], a[2], a[3]))
pd = (int)(input("退出请输入0,保存朋友圈数据请输入1:"))
if pd == 0:
return self.system2_welcome()
elif pd==1:
fl_name = str(input("请输入要保存的文件名:"))
fo = open("{}.txt".format(fl_name), "w")
for a in db:
str_="id为{}的用户,发布的第{}条动态,时间:{}\n内容:{}\n".format(a[0], a[1], a[2], a[3])
fo.write(str_)
print("保存完成!")
fo.close()
return self.read_dc()
if __name__ == '__main__':
s1 = System()
s1.system1_welcome()