zl程序教程

您现在的位置是:首页 >  后端

当前栏目

SQLAlchemy Core中的异常及事务处理样码

Core异常 事务处理 SqlAlchemy
2023-09-27 14:28:45 时间
from datetime import datetime from sqlalchemy import (MetaData, Table, Column, Integer, Numeric, String, Boolean, DateTime, ForeignKey, ForeignKey, create_engine, CheckConstraint) from sqlalchemy import (insert, select, update, delete, text, desc, cast, and_, or_, not_) from sqlalchemy.sql import func from sqlalchemy.exc import IntegrityError metadata = MetaData() cookies = Table(cookies, metadata, Column(cookie_id, Integer(), primary_key=True), Column(cookie_name, String(50), index=True), Column(cookie_recipe_url, String(255)), Column(cookie_sku, String(55)), Column(quantity, Integer()), Column(unit_cost, Numeric(12, 2)), CheckConstraint(quantity = 0, name=quantity_positive) users = Table(users, metadata, Column(user_id, Integer(), primary_key=True), Column(username, String(15), nullable=False, unique=True), Column(email_address, String(255), nullable=False), Column(phone, String(20), nullable=False), Column(password ,String(25), nullable=False), Column(created_on, DateTime(), default=datetime.now), Column(updated_on, DateTime(), default=datetime.now, onupdate=datetime.now) orders = Table(orders, metadata, Column(order_id, Integer(), primary_key=True), Column(user_id, ForeignKey(users.user_id)), Column(shipped, Boolean(), default=False) line_items = Table(line_items, metadata, Column(line_items_id, Integer(), primary_key=True), Column(order_id, ForeignKey(orders.order_id)), Column(cookie_id, ForeignKey(cookies.cookie_id)), Column(quantity, Integer()), Column(extended_cost, Numeric(12, 2)) engine = create_engine(mysql+pymysql://u:p@ip:3306/cookies) metadata.create_all(engine) connection = engine.connect() def ship_it(order_id): s = select([line_items.c.cookie_id, line_items.c.quantity]) s = s.where(line_items.c.order_id == order_id) transaction = connection.begin() cookies_to_ship = connection.execute(s) try: for cookie in cookies_to_ship: u = update(cookies).where(cookies.c.cookie_id==cookie.cookie_id) u = u.values(quantity = cookies.c.quantity - cookie.quantity) result = connection.execute(u) u = update(orders).where(orders.c.order_id == order_id) u = u.values(shipped=True) result = connection.execute(u) print("Shipped order ID: {}".format(order_id)) transaction.commit() except IntegrityError as error: transaction.rollback() print(error) ins = insert(users).values( username="cookiemon", email_address="mon@cookie.com", phone="111-111-1111", password="password" result = connection.execute(ins) except IntegrityError as error: pass ins = cookies.insert() inventory_list = [ cookie_name: chocolate chip, cookie_recipe_url: http://some.aweso.me/cookie/recipe.html, cookie_sku: CC01, quantity: 12, unit_cost: 0.50 cookie_name: dark chocolate chip, cookie_recipe_url: http://some.aweso.me/cookie/recipe_dark.html, cookie_sku: CC02, quantity: 1, unit_cost: 0.75 result = connection.execute(ins, inventory_list)
s = select([cookies.c.cookie_name, cookies.c.quantity]) connection.execute(s).fetchall() ship_it(20)

 


Java+Oracle实现事务——JDBC事务 J2EE支持JDBC事务、JTA事务和容器事务事务,这里说一下如何实现JDBC事务。 JDBC事务是由Connection对象所控制的,它提供了两种事务模式:自动提交和手动提交,默认是自动提交。
我为什么用 SQLite 和 FMDB 而不用 Core Data 凭良心讲,我不能告诉你不去使用Core Data。它不错,而且也在变好,并且它被很多其他Cocoa开发者所理解,当有新人加入你的组或者需要别人接手你的项目的时候,这点很重要。 更重要的是,不值得花时间和精力去写自己的系统去代替它。真的,使用Core Data吧。
from sqlalchemy import Column, String, create_engine, Integer, Date, Float, ForeignKey from sqlalchemy.
本文来介绍一下J2EE中和事务相关的内容,在阅读本文之前,希望读者对分布式有一定的了解。 Java事务的类型有三种:JDBC事务、JTA(Java Transaction API)事务、容器事务。
本文已收录在本人整编的JAVA技术资源目录中,微信用户请点击头像查看《JAVA通关秘籍》 1. 数据库中的事务 Java中的事务管理,最终都是体现在数据上,因此,了解数据库对事务的处理是非常必要的