【pyside6 】数据库同步研究(1)
使用pyside6制作一个股票数据库处理软件。登录界面已经写好。如下图所示:
云数据库:MongoDB atlas:
优势:使用Navicat即可连接。如下图所示:
劣势:登录较慢,需要等待。
本地数据库:sqlite3
优势:速度快
劣势:不能云操作
结合云数据库与本地数据库的优劣势,进行互补。
MongoDB atlas已经实现增删改查的功能。MongoDB与sqlite3是双向数据交换,view与sqlite3也是双向数据交换.
登录时:view->mongdb->sqlite3。sign_in函数是mongdb操作。jump是跳转操作。db_save是保存到sqlite3中。
代码如下:
def loginId(self):
'''
登陆
:return:
'''
user_id = self.ui.edt_login_id.text()
#print('qt5登录src 输入user_id->', user_id)
if not user_id:
return QMessageBox.warning(self, "错误", "请输入id,例如:e6e72588dbfe4XXXXXXXXb1960c40f"),'帐号user_id:{}登录失败,帐号为空'.format(user_id)
flag =sign_in(user_id)
if not flag[0]:
return QMessageBox.warning(self, "错误", "请输入id,例如:e6e72588dbfe4XXXXXXXXb1960c40f"),'帐号user_id:{}登录失败,数据库没注册'.format(user_id),flag
if flag[0]:
print('登录src->,user_info=',flag[2][2])
# ________________v0.0.2_______________________>20230902update
self.flag_sign_in = flag
self.user_info=self.flag_sign_in[2][2]
self.user_id=user_id
self.jump()#跳转,数据保存
def jump(self):
# ________________v0.0.1_______________________>
# from pyqt5_demo.desktop import MyWidget
# self.widget = MyWidget()
# self.widget.resize(800, 600)
# self.widget.show()
# self.close()
# ________________v0.0.2_______________________>
#self.user_info = flag[2][2] # {'_id': '6384cc423bd1c86122832151', 'mail_': 'ltsjiim@126.com', 'uuid_id': '5c3aaff7364446b8862119a617450650', 'id_time': '2022-11-28 22:57:04.945858', 'note': '', 'version': '0.0.1', 'today_num': 25, 'total_num': 567, 'last_signin_time': '2023-08-31 20:18:21.416992', 'vip_type': 'SVIP'}
if self.user_info['note'] == '用户私自修改数据库,警告':
QMessageBox.warning(self, "错误", '帐号user_id:{},请不要修改数据库'.format(self.user_id))
self.close()
return False, '用户私自修改数据库', self.close()
from pyqt5_demo.menu.bar_v_0_0_1 import GUI
self.top_ui = GUI({'uuid': self.user_id}, self.user_info)
self.top_ui.show()
self.close()
self.db_save()
return True, '帐号user_id:{}登录成功,欢迎使用'.format(self.user_id),self.flag_sign_in
def db_save(self):
# print(self.user_info)
import pandas as pd
df=pd.DataFrame(self.user_info, index=[1]).reset_index(drop=True)
from resource_db.user_data.user_sqlite import save_df
flag=save_df(df,style='replace')
双向操作时:view->sqlite3、sqlite3->view
:mongodb->sqlite3、sqlite3->mongodb
其中view读取sqlite3简单,已经实现。下面3个功能等待实现。