当前位置: 首页 > wzjs >正文

泰安网站制作排行网站文件名格式

泰安网站制作排行,网站文件名格式,西安网站建设设计的好公司,最权威的网站推广公司简介网上关于Qt访问数据库的资料大多使用QSqlDatabase模块。虽然这在C中尚可接受,但在Python中使用就显得过于繁琐了——不仅要手动编写SQL语句,还与Python追求简洁的理念背道而驰。在这里写一个基于sqlalchemy的示例,也可以使用其他的ORM库 …

简介

网上关于Qt访问数据库的资料大多使用QSqlDatabase模块。虽然这在C++中尚可接受,但在Python中使用就显得过于繁琐了——不仅要手动编写SQL语句,还与Python追求简洁的理念背道而驰。

在这里写一个基于sqlalchemy的示例,也可以使用其他的ORM

sql_thread.py

# coding: utf-8
from collections import deque
from typing import Callablefrom PySide6.QtCore import QObject, Signal, QThread
from sqlalchemy.orm import Sessionclass SqlRequest:""" Sql request """def __init__(self, func: Callable, slot: Callable = None, params: dict = None):self.func = funcself.slot = slotself.params = params or {}class SqlResponse:""" Sql的反应 """def __init__(self, data: object, slot: Callable = None):self.slot = slotself.data = dataclass SqlSignalBus(QObject):""" Sql信号总线 """fetchDataSig = Signal(SqlRequest)dataFetched = Signal(SqlResponse)sqlSignalBus = SqlSignalBus()def sqlRequest(func: Callable, slot=None, **params):""" 从数据库查询 SQL 数据 """request = SqlRequest(func, slot, params)sqlSignalBus.fetchDataSig.emit(request)class DatabaseThread(QThread):def __init__(self, parent=None):super().__init__(parent=parent)self.server = Noneself.tasks = deque()sqlSignalBus.fetchDataSig.connect(self.onFetchData)def run(self):func, args, kwargs = self.serverserver: Session = func(*args, **kwargs)while self.tasks:request: SqlRequest = self.tasks.popleft()result = request.func(**request.params, server=server)sqlSignalBus.dataFetched.emit(SqlResponse(result, request.slot))server.close()def setServer(self, func: Callable, *args, **kwargs):self.server = (func, args, kwargs)def onFetchData(self, request: SqlRequest):self.tasks.append(request)if not self.isRunning():self.start()

db.py

# coding: utf-8
from random import randint, choicefrom sqlalchemy import Column, Integer, String
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker, Sessionengine = create_engine('sqlite:///test.db')
Base = declarative_base()def create_session():return sessionmaker(bind=engine)()def init_create_table() -> None:Base.metadata.create_all(bind=engine, checkfirst=True)class User(Base):# 表的名字:__tablename__ = 'user'# 表的结构:id = Column(Integer, autoincrement=True, primary_key=True, comment='用户ID')name = Column(String(20))age = Column(Integer)phone = Column(String(20))email = Column(String(50))sex = Column(String(10))def __repr__(self):return f"User(id={self.id}, name={self.name}, age={self.age}, phone={self.phone}, email={self.email}, sex={self.sex})"def add_user(server: Session):server.add(User(name=f'Tom-{randint(1, 100)}', age=randint(1, 100), phone=str(randint(10000000, 99999999)),email='tom@123.com',sex=choice(['male', 'female'])))server.commit()def select_user(server: Session):users = server.query(User).all()return users

demo.py

# coding: utf-8
import sysfrom PySide6.QtWidgets import QApplication, QWidget, QPushButton, QHBoxLayoutfrom db import create_session, User, add_user, select_user, init_create_table
from sql_thread import sqlSignalBus, SqlResponse, DatabaseThread, sqlRequestclass MainWindow(QWidget):def __init__(self):super().__init__()self.setWindowTitle("Sql Thread Example")self.horizontalLayout = QHBoxLayout(self)self.addUserButton = QPushButton("Add User", self)self.selectUserButton = QPushButton("Select User", self)self.horizontalLayout.addWidget(self.addUserButton)self.horizontalLayout.addWidget(self.selectUserButton)self.resize(400, 300)self.databaseThread = DatabaseThread(self)self.databaseThread.setServer(create_session)sqlSignalBus.dataFetched.connect(self.onDataFetched)self.addUserButton.clicked.connect(lambda: sqlRequest(add_user))self.selectUserButton.clicked.connect(lambda: sqlRequest(select_user, self.onSelectUser))def onSelectUser(self, users: list[User]):print(users)def onDataFetched(self, response: SqlResponse):if response.slot:response.slot(response.data)if __name__ == '__main__':app = QApplication(sys.argv)init_create_table()mainWindow = MainWindow()mainWindow.show()sys.exit(app.exec())

在这里插入图片描述


文章转载自:

http://TU5Eg8gn.pgjyc.cn
http://2Q8BSyvr.pgjyc.cn
http://ihIYGNd4.pgjyc.cn
http://9LM2pKde.pgjyc.cn
http://IBZEFuio.pgjyc.cn
http://V6QMnXQX.pgjyc.cn
http://c5DiooUP.pgjyc.cn
http://FDHpBCIv.pgjyc.cn
http://w1ILhjTq.pgjyc.cn
http://Q1wH2nZa.pgjyc.cn
http://ETyAtMbg.pgjyc.cn
http://fxKD2V3J.pgjyc.cn
http://qlC81gdD.pgjyc.cn
http://ytG1sRFs.pgjyc.cn
http://ZUU0AeN9.pgjyc.cn
http://unaBlKAY.pgjyc.cn
http://fWCQEGuT.pgjyc.cn
http://FeQLvtaO.pgjyc.cn
http://2YHkZS8n.pgjyc.cn
http://hlGdMEcv.pgjyc.cn
http://FssPVLix.pgjyc.cn
http://KQJT3hny.pgjyc.cn
http://s9Z3qesV.pgjyc.cn
http://KB9f4Emh.pgjyc.cn
http://vd6PgtOp.pgjyc.cn
http://yoaVzV4n.pgjyc.cn
http://3PyS1Rdb.pgjyc.cn
http://2ML3gE1Z.pgjyc.cn
http://AKqUOuPg.pgjyc.cn
http://5x48g4jy.pgjyc.cn
http://www.dtcms.com/wzjs/635934.html

相关文章:

  • 建设彩票网站最低成本做企业网站 白之家
  • 做卡贴质量好的网站免费域名注册查询
  • 响应式外贸建站企查查怎么精准找客户
  • 河南省建设厅网站136号文件wordpress后台侧栏
  • 网页源代码搜索关键字上海整站优化
  • 水友做的yyf网站有关网站设计的书
  • 免费建网站知乎深圳设计大厦
  • 优化大师官方网站线上推广平台哪些好
  • 南宁公司网站设计安装微信
  • 惠州企业建站程序网站建设维护报价
  • 襄阳南漳县城乡建设局网站自己建的网站也要注册域名吗
  • 江阴外贸网站设计wordpress mycred汉化
  • 公司英文网站多少钱怎么弄一个公众号
  • 网站全屏代码poedit pro wordpress
  • 网站首页关键如何优化怎样做化妆品网站
  • 精品课程网站建设 公司国内优秀的设计网站
  • 毕设做网站和app百度百度地图
  • 网站首页制作怎么做的中国建设银行英语网站首页
  • 专门做库存处理的网站高青云速网站建设
  • 建设信用卡商城网站可信网站认证logo
  • 网站在只有域名了有哪些网站交互效果做的好的
  • 广州网站建设技术托管企业解决方案业余
  • 长沙专业网站设计模仿京东商城网站开发视频
  • pc网站建设意见个人养老保险金怎么交
  • 电子商务网站建设的安全性永州网站建设开发
  • 广州网站定制开发广东省公共资源交易中心地址
  • 购买网站域名微网站设计与开发是什么
  • 深圳网站建设信科公司便宜中国东凤网站制作
  • 网站怎么描述做网站包括图片设计吗
  • 关于网站得精神文明建设新媒体运营需要具备哪些能力