You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
142 lines
5.2 KiB
142 lines
5.2 KiB
'''
|
|
import sys
|
|
import pymysql
|
|
from PyQt5.QtCore import Qt
|
|
from PyQt5.QtGui import QStandardItemModel, QStandardItem
|
|
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableView
|
|
|
|
class MainWindow(QMainWindow):
|
|
def __init__(self):
|
|
super().__init__()
|
|
self.setWindowTitle("Personal Information")
|
|
# 创建 QTableView delete
|
|
self.table_view = QTableView(self)
|
|
self.setCentralWidget(self.table_view)
|
|
# 设置模型
|
|
self.model = QStandardItemModel(0, 7)
|
|
self.model.setHorizontalHeaderLabels(['身份证号','用户名', '性别', '用户年龄', '电话号码','户籍','密码'])
|
|
self.table_view.setModel(self.model)
|
|
# 加载数据
|
|
self.load_data()
|
|
# 使表格可编辑
|
|
self.table_view.setEditTriggers(QTableView.AllEditTriggers)
|
|
# 捕捉模型数据改变信号
|
|
self.model.itemChanged.connect(self.update_database)
|
|
|
|
|
|
#connect mysql and enquire database data
|
|
def load_data(self):
|
|
try:
|
|
connection = pymysql.connect(
|
|
host='127.0.0.1',
|
|
user='root',
|
|
password='20021220',
|
|
database='pybank'
|
|
)
|
|
cursor = connection.cursor()
|
|
cursor.execute("SELECT * FROM customer")
|
|
data = cursor.fetchall()
|
|
cursor.close()
|
|
connection.close()
|
|
for row in data:
|
|
items = [QStandardItem(str(field)) for field in row]
|
|
for item in items:
|
|
item.setTextAlignment(Qt.AlignCenter)
|
|
self.model.appendRow(items)
|
|
except Exception as e:
|
|
print(f"Error loading data: {e}")
|
|
|
|
def update_database(self, item):
|
|
row = item.row()
|
|
col = item.column()
|
|
new_value = item.text()
|
|
|
|
print(row,col,new_value)
|
|
try:
|
|
# 获取主键(第一列是主键)
|
|
primary_key = self.model.item(row, 0).text()
|
|
#map column names
|
|
columns=['cid', 'cname', 'csex', 'cage', 'cnumber', 'caddress', 'cpsw']
|
|
column_name=columns[col]
|
|
# 更新数据库
|
|
connection = pymysql.connect(
|
|
host='127.0.0.1',
|
|
user='root',
|
|
password='20021220',
|
|
database='pybank'
|
|
)
|
|
cursor = connection.cursor()
|
|
query = f"UPDATE account SET {column_name} = %s WHERE cid = %s"
|
|
cursor.execute(query, (new_value, primary_key))
|
|
connection.commit()
|
|
cursor.close()
|
|
connection.close()
|
|
print(f"Updated row {row}, column {col} with new value {new_value}")
|
|
except Exception as e:
|
|
print(f"Error updating database: {e}")
|
|
|
|
|
|
if __name__ == '__main__':
|
|
app = QApplication(sys.argv)
|
|
main_window = MainWindow()
|
|
main_window.resize(800, 600)
|
|
main_window.show()
|
|
sys.exit(app.exec_())
|
|
|
|
'''
|
|
|
|
|
|
def add_acc(self):
|
|
global user_now
|
|
try:
|
|
accid = self.generator_accid()
|
|
accbalance = self.ui.get_savings.text()
|
|
current_date = datetime.now().date()
|
|
acc_start = current_date.strftime('%Y-%m-%d')
|
|
cid = user_now
|
|
acctime = self.ui.deposit_time.currentText()
|
|
# 获取 QGroupBox 中选中的 QRadioButton
|
|
typebox = self.ui.type_box
|
|
acctype = None
|
|
for button in typebox.findChildren(QRadioButton):
|
|
if button.isChecked():
|
|
acctype = button
|
|
break
|
|
if acctype is None:
|
|
raise ValueError("未选择账户类型")
|
|
return
|
|
acc_type = acctype.text()
|
|
# 确认选择活期类型时长只能选择不定期
|
|
if acc_type == "活期" and acctime != "不定期":
|
|
raise ValueError("活期账户的时长只能选择不定期")
|
|
return
|
|
# 输出到控制台
|
|
print(accid, accbalance, acc_start, acctime, cid, acc_type)
|
|
# 将新账户信息插入数据库
|
|
try:
|
|
db = pymysql.connect(host='127.0.0.1', user='root', password='20021220', database='pybank')
|
|
cur = db.cursor()
|
|
query = "INSERT INTO account (accid, accbalance, acctime_start, accdur_time, cid, acc_type) VALUES (%s, %s, %s, %s, %s, %s)"
|
|
cur.execute(query, (accid, accbalance, acc_start, acctime, cid, acc_type))
|
|
db.commit()
|
|
db.close()
|
|
QMessageBox.information(self, "成功", "账户添加成功")
|
|
except Exception as db_error:
|
|
print(f"数据库错误: {db_error}")
|
|
QMessageBox.critical(self, "错误", "添加账户到数据库失败")
|
|
except Exception as e:
|
|
print(e)
|
|
QMessageBox.critical(self, "错误", f"发生错误: {e}")
|
|
|
|
# 将信息写入文件
|
|
try:
|
|
filename = f"{user_now}.txt"
|
|
s = f"用户于{acc_start},开通账号:{accid},存取金额为{accbalance},期限为{acctime}\n"
|
|
with open(filename, "a", encoding='UTF-8') as file:
|
|
file.write(s)
|
|
file.write("-" * 60 + "\n")
|
|
print(f"信息已写入文件: {filename}")
|
|
except Exception as file_error:
|
|
print(f"文件写入错误: {file_error}")
|
|
self.ui.get_savings.clear()
|