fix the mysqldb connection

This commit is contained in:
ColsonZhang 2021-04-03 13:09:19 +08:00
parent a5579e04f0
commit 8bd92e6b91
7 changed files with 173 additions and 67 deletions

View File

@ -60,20 +60,23 @@ app.py ----服务器的主程序
## 更新日志
* 2021年4月2日
* fix当Mysql数据库连接失败时系统自动重新连接
* 2021年4月1日
* bug系统运行一天后mysql异常
* ~~bugschematic中能够进行绘图的区域有限~~
* bug移动整体电路时电路连线无法一起移动
* bugPIN POUT暂时无作用
* to do:主页面取消跳转采用判定是否登录的方法改写login logou
* ~~to do:主页面取消跳转采用判定是否登录的方法改写login logou~~
* fix当仿真失败时会提醒用户Fail
* new: 代码新增DEBUG宏变量为False时关闭print
* 2021年3月31日前后端更新
* 新增在服务器上成功部署后端代码为适配centos服务器而做了一些修改。
* 新增对schematic的Help弹窗做了修改对login和register界面做了修改。
* bug:处理注册信息时需要对用户名和邮箱是否重复进行判定。
* ~~bug:处理注册信息时需要对用户名和邮箱是否重复进行判定。~~
* bug:Datetime非北京时间
* 2021年3月30日前后端更新

View File

@ -9,44 +9,78 @@ table_name = "user_info"
DEBUG = False
# 打开数据库连接
db = pymysql.connect(host=database_ip, user=database_user, password=database_passwd, database=database_name )
print('open mysql success !!!')
# 使用cursor()方法获取操作游标
cursor = db.cursor()
def DB_Check_byName(user_name):
class Mysql_DB():
def __init__(self, host, user, password, database):
self.host = host
self.user = user
self.password = password
self.database = database
self.connect()
def connect(self):
self.conn = pymysql.connect(host=self.host, user=self.user, password=self.password, database=self.database )
print('connect mysql success !!!')
def query(self, sql):
try:
cursor = self.conn.cursor()
cursor.execute(sql)
except pymysql.OperationalError:
self.connect()
cursor = self.conn.cursor()
cursor.execute(sql)
return cursor
def __commit(self):
try:
self.conn.commit()
except pymysql.OperationalError:
self.connect()
self.conn.commit()
def __rollback(self):
try:
self.conn.rollback()
except pymysql.OperationalError:
self.connect()
self.conn.rollback()
def DB_Check_byName(self,user_name):
sql = "SELECT * FROM %s WHERE user_name='%s' " % (table_name,user_name)
try:
# 执行SQL语句
cursor.execute(sql)
cursor = self.query(sql)
# 获取所有记录列表
results = cursor.fetchall()
if(results != tuple()):
passwd = results[0][2]
return passwd
else:
return False
except:
if DEBUG:
print("There is no the user's info !")
print("MYSQL ERROR 01 !")
return False
def DB_Check_byEmail(email):
def DB_Check_byEmail(self,email):
sql = "SELECT * FROM %s WHERE user_email='%s' " % (table_name,email)
try:
# 执行SQL语句
cursor.execute(sql)
cursor = self.query(sql)
# 获取所有记录列表
results = cursor.fetchall()
if(results != tuple()):
passwd = results[0][2]
return passwd
else:
return False
except:
if DEBUG:
print("There is no the user's info !")
print("MYSQL ERROR 02 !")
return False
def DB_Insert_User(user_info):
def DB_Insert_User(self,user_info):
user_name = user_info["username"]
user_passwd = user_info["password"]
user_email = user_info["email"]
@ -54,26 +88,16 @@ def DB_Insert_User(user_info):
sql = "INSERT INTO user_info(user_name,user_passwd,user_email,user_register_date) VALUES('%s', '%s', '%s', '%s' )"% (user_name, user_passwd, user_email, user_date)
try:
# 执行sql语句
cursor.execute(sql)
cursor = self.query(sql)
# 执行sql语句
db.commit()
self.__commit()
if DEBUG:
print("Insert user_info successfully!")
print("Insert %s successfully!"%(user_name))
return True
except:
# 发生错误时回滚
db.rollback()
if DEBUG:
print("Insert user_info error!")
self.__rollback()
print("Mysql ERROR 03")
return False
# if __name__ == "__main__":
# res = authenticate('user5','1234')
# print("authenticate result: ",res)
# for i in range(10):
# s = str(i)
# res = add_user('user'+s,'1234','user'+s+'@qq.com')
# print("add user", s ," res: ",res)
# res = authenticate('user5','1234')
# print("authenticate result: ",res)
Mysql = Mysql_DB(host=database_ip,user=database_user, password=database_passwd, database=database_name )

79
handler/MysqlDB_backup.py Normal file
View File

@ -0,0 +1,79 @@
import pymysql
# 数据库定义参数
database_ip = "localhost"
database_user = "guest"
database_passwd = "guest1234"
database_name = "GUESTDB"
table_name = "user_info"
DEBUG = False
# 打开数据库连接
db = pymysql.connect(host=database_ip, user=database_user, password=database_passwd, database=database_name )
print('open mysql success !!!')
# 使用cursor()方法获取操作游标
cursor = db.cursor()
def DB_Check_byName(user_name):
sql = "SELECT * FROM %s WHERE user_name='%s' " % (table_name,user_name)
try:
# 执行SQL语句
cursor.execute(sql)
# 获取所有记录列表
results = cursor.fetchall()
passwd = results[0][2]
return passwd
except:
if DEBUG:
print("There is no the user's info !")
return False
def DB_Check_byEmail(email):
sql = "SELECT * FROM %s WHERE user_email='%s' " % (table_name,email)
try:
# 执行SQL语句
cursor.execute(sql)
# 获取所有记录列表
results = cursor.fetchall()
passwd = results[0][2]
return passwd
except:
if DEBUG:
print("There is no the user's info !")
return False
def DB_Insert_User(user_info):
user_name = user_info["username"]
user_passwd = user_info["password"]
user_email = user_info["email"]
user_date = user_info["date"]
sql = "INSERT INTO user_info(user_name,user_passwd,user_email,user_register_date) VALUES('%s', '%s', '%s', '%s' )"% (user_name, user_passwd, user_email, user_date)
try:
# 执行sql语句
cursor.execute(sql)
# 执行sql语句
db.commit()
if DEBUG:
print("Insert user_info successfully!")
return True
except:
# 发生错误时回滚
db.rollback()
if DEBUG:
print("Insert user_info error!")
return False
# if __name__ == "__main__":
# res = authenticate('user5','1234')
# print("authenticate result: ",res)
# for i in range(10):
# s = str(i)
# res = add_user('user'+s,'1234','user'+s+'@qq.com')
# print("add user", s ," res: ",res)
# res = authenticate('user5','1234')
# print("authenticate result: ",res)

View File

@ -3,7 +3,7 @@ from .MysqlDB import *
#用户密码匹配判断函数
def authenticate(username,password):
passwd_db = DB_Check_byName(username)
passwd_db = Mysql.DB_Check_byName(username)
if passwd_db:
if password == passwd_db:
return True
@ -12,12 +12,12 @@ def authenticate(username,password):
# 数据库中增加新用户
def add_user(username,password,email=''):
create_time=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
result = DB_Insert_User({'username':username,'password':password,'email':email,'date':create_time})
result = Mysql.DB_Insert_User({'username':username,'password':password,'email':email,'date':create_time})
return result
def check_register(username,password,email):
check_name = DB_Check_byName(username)
check_email = DB_Check_byEmail(email)
check_name = Mysql.DB_Check_byName(username)
check_email = Mysql.DB_Check_byEmail(email)
check_pw = check_password(password)
if check_name != False: