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

做百度网站每年的费用多少合适wordpress 数据库

做百度网站每年的费用多少合适,wordpress 数据库,想学广告设计没有基础,html简单网页案例最近使用它交互数据库,想实现类似java aop那种自动事务控制,不用手动commit或者rollback。我是用的是flaskdenpendency-injecter 这是我的db的配置类,里面会初始化一些session配置,里面比较重要的是把autocommit和autoflush关闭了…

最近使用它交互数据库,想实现类似java aop那种自动事务控制,不用手动commit或者rollback。我是用的是flask+denpendency-injecter

 这是我的db的配置类,里面会初始化一些session配置,里面比较重要的是把autocommit和autoflush关闭了,因为我们的代码会来处理这个,还有就是把expire_on_commit设置为flase,否则你commit之后,再取用某个entity就会报错了,例如你新建了一个entity,这个时候会更新他的id,返回给前端的时候就会报错了(Error Messages — SQLAlchemy 2.0 Documentation)。

"""Database module."""from contextlib import contextmanager, AbstractContextManager
from typing import Callablefrom sqlalchemy import create_engine, orm
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import Session
Base = declarative_base()class DatabaseConfig:def __init__(self, db_url: str) -> None:self._engine = create_engine(db_url, echo=True)self._session_factory = orm.scoped_session(orm.sessionmaker(autocommit=False,autoflush=False,expire_on_commit=False,bind=self._engine,),)def create_database(self) -> None:Base.metadata.create_all(self._engine)@contextmanagerdef session(self) -> Callable[..., AbstractContextManager[Session]]:session: Session = self._session_factory()try:yield sessionexcept Exception:session.rollback()raiseelse:if session._transaction.is_active:session.commit()session.close()

然后comtextmanger里面就是我们的处理代码了,我们主要依靠with代码块来控制,在yield之前的属于__init__,在yield之后属于__exit__,也就是当with代码块结束之前,如果发生任何报错,我们都会进行rollback操作,并且raise(这部分需要error handler来做了,这里就不赘述了),然后如果什么错误都没有发生,就检测transaction是否还是active,如果是就commit,然后关闭session。

 然后在Container中注入session contextmanager。

class Container(containers.DeclarativeContainer):wiring_config = containers.WiringConfiguration(packages=["main"])config = providers.Configuration(yaml_files=["config.yml"])db=providers.Singleton(DatabaseConfig,db_url=config.db.url)user_repository = providers.Factory(UserRepositoryImpl)user_service = providers.Factory(UserService,user_repository=user_repository,session_factory=db.provided.session)

然后再service层使用with代码块控制transation ,整个逻辑包含在同一个with中就行了。

class UserService:@injectdef __init__(self, user_repository: UserRepository, session_factory: Callable[..., AbstractContextManager[Session]]) -> None:self._repository: UserRepository = user_repositoryself.session_factory=session_factorydef create_user(self,user) -> User:with self.session_factory() as session:return self._repository.add(session=session,user=user)

然后在repo里面写具体代码就行了

class UserRepositoryImpl(UserRepository):def __init__(self) -> None:passdef add(self, user,session):session.add(user)return user

http://www.yayakq.cn/news/552673/

相关文章:

  • 微信如何绑定网站网站建设企业网站优化
  • 个人备案做视频网站快速提升网站权重
  • 免费建立网站网络营销公司怎么赚钱的
  • 永康网站设计站长工具 怎么做网站地图
  • 网站优化方法页面沈阳建设工程信息网查询
  • 微信公众号做留言网站网站上飘窗怎么做
  • 公司备案证查询网站查询网站查询怎么把别人网站源码弄出来
  • 百度怎么推广自己的网站个人主页的html设计
  • 什么网站做学校设计省级建筑信息平台
  • 怎么推销建设网站中山市建设工程
  • net网站建设入门教程苏州园区公积金管理中心
  • 佛山网站建设专业企业建设网站的案例
  • 网站文章内容公司内部网站建设
  • 网站和app的开发成本响应式网站好处
  • 金融网站建设医院网站建设的指导思想
  • 宁波网站建设 华企立方wordpress 写文章空白
  • 郑州网站建设制作费用公司企业微信
  • 网页制作作业网站建好的网站能修改吗
  • 网站制作公司代理iphone做网站服务器
  • 网站上线 模板深圳品牌网站设计公司
  • 学校网站建设情况介绍企业网站建设推广公司
  • 企业建站1年dw做的网站怎么去掉
  • 互联网网站名字厦门seo排名优化
  • 网站建设都需要买什么东西着力加强网站内容建设
  • 大庆建设中等职业技术学校网站软件开发工具的作用
  • 微网站建设公司仪陇建设局网站
  • 登陆不了建设银行网站网站建设的要求和策划
  • 建设银行网站上不去望牛墩网站仿做
  • 手机网站导航栏如何做建设信用卡购物网站
  • 网站建设及售后服务的说明书鞍钢贴吧