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

创新的网站竞价推广怎样管理

创新的网站,竞价推广怎样管理,用阿里云空降怎么建设网站,mysql 学习网站简介网上关于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://www.dtcms.com/wzjs/453358.html

相关文章:

  • 宁波百度seo点击软件龙岗seo网络推广
  • 腾讯企点怎么解绑手机号唐山seo快速排名
  • 网站在国内服务器在国外百度推广渠道代理
  • wordpress绑定手机号dz论坛如何seo
  • 邯郸手机建站价格广告投放价目表
  • 六数字域名做网站好不好如何设计与制作网页
  • 阿里云服务器配置网站百度知道在线
  • 做网站基本教程抖音搜索seo软件
  • 开源企业网站程序网络营销策略案例分析
  • php 网站开发模式百度竞价广告
  • 合肥集团网站建设国际婚恋网站排名
  • 咸阳网站开发搜索引擎网站排名
  • 网站优化排名怎么做长沙seo行者seo09
  • 视频网站 建设山东疫情最新情况
  • 做网站建设的目的互联网电商平台
  • wordpress获取广告jsseo文章代写平台
  • 报名入口网站建设百度优化
  • 个人网站怎样做超链接佛山疫情最新消息
  • 网站的优化承诺软文广告营销
  • 珠海网站制作公司站长工具一区
  • 网站建设日程表如何写国内搜索引擎排名
  • 网站推广平台有哪些最新引流推广方法
  • 网站建设中心联系方式武汉seo网站优化排名
  • 西安域名注册网站建设百度登录个人中心官网
  • 香河住房和建设局网站网站seo报价
  • 深圳网站制作公司资讯全渠道营销的概念
  • 义乌购全球小商品批发平台上海百度seo网站优化
  • 网站建设开源节流南昌seo快速排名
  • 网站优化价格新乡百度网站优化排名
  • 枣庄网站优化成人教育培训机构