Python 数据库连接

#!/usr/bin/env python
#-*-coding:utf-8-*-
#异常处理,with的使用,
class Mycontex(object):def __init__(self,name):self.name=namedef __enter__(self):print("__enter__")return selfdef do_self(self):print('do_self')def __exit__(self,exc_type,exc_value,traceback):print('__exit__')print("Error: ",exc_type," info:",exc_value)if __name__=='__main__':with Mycontex('test context') as f:print(f.name)f.do_self()#!/usr/bin/env python
#-*-coding:utf-8-*-
import MySQLdb
#连接数据库
conn=MySQLdb.Connect(host='127.0.0.1',port=3306,user='root',passwd='123456',db='imooc',charset='utf8')
cursor=conn.cursor()sql_insert="insert into user(userid,username) values(10,'name10')"
sql_update="update user set username='name91' where userid=9"
sql_delete="delete from user where userid<3"
#异常处理
try:cursor.execute(sql_insert)print(cursor.rowcount)cursor.execute(sql_update)print(cursor.rowcount)cursor.execute(sql_delete)print(cursor.rowcount)conn.commit()
except Exception as e:print(e)#回滚事物conn.rollback()cursor.close()
conn.close()#!/usr/bin/env python
#-*-coding:utf-8-*
#银行转账模拟
import sys
import MySQLdbclass TransferMoney(object):def __init__(self,conn):self.conn=conn#检查用户是否存在def check_acct_available(self,acctid):cursor=self.conn.cursor()try:sql="select * from account where acctid=%s" % acctidcursor.execute(sql)print("check_acct_available:"+sql)rs=cursor.fetchall()if len(rs)!=1:raise Exception("账号%s不存在" % acctid)finally:cursor.close()#检查用户是否有足够的钱def has_enough_money(self,acctid,money):cursor=self.conn.cursor()try:sql="select * from account where acctid=%s and money>=%s" % (acctid,money)cursor.execute(sql)print("has_enough_money:"+sql)rs=cursor.fetchall()if len(rs)!=1:raise Exception("账号%s没有足够的钱" % acctid)finally:cursor.close()#用户减少的钱def reduce_money(self,acctid,money):cursor=self.conn.cursor()try:sql="update account set money=money-%s where acctid=%s" % (money,acctid)cursor.execute(sql)print("reduce_money:"+sql)if cursor.rowcount!=1:raise Exception("账号%s减款失败" % acctid)finally:cursor.close()def add_money(self,acctid,money):cursor=self.conn.cursor()try:sql="update account set money=money+%s where acctid=%s" % (money,acctid)cursor.execute(sql)print("add_money:"+sql)if cursor.rowcount!=1:raise Exception("账号%s加款失败" % acctid)finally:cursor.close()def transfer(self,source_acctid,target_acctid,money):try:self.check_acct_available(source_acctid)self.check_acct_available(target_acctid)self.has_enough_money(source_acctid,money)self.reduce_money(source_acctid,money)self.add_money(target_acctid,money)self.conn.commit()except Exception as e:self.conn.rollback()raise eif __name__=='__main__':#source_acctid=sys.argv[0]#target_acctid=sys.argv[1]#money=sys.argv[2]source_acctid=input('请输入用户')target_acctid=input('转入用户')money=input('转入金额')conn=MySQLdb.Connect(host='127.0.0.1',user='root',passwd='123456',port=3306,db='imooc')tr_money=TransferMoney(conn)try:tr_money.transfer(source_acctid,target_acctid,money)except Exception as e:print('出现问题:'+str(e))finally:conn.close()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/509003.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中文分词测试语句

研究生命科学研究生命令本科生我从马上下来我马上下来北京大学生喝进口红酒在北京大学生活区喝进口红酒从小学电脑从小学毕业美军中将竟公然说新建地铁中将禁止商业摊点这块地面积还真不小地面积了厚厚的雪让我们以爱心和平等来对待动物阿美首脑会议将讨论巴以和平等问题锌合金…

socket网络编程udp

#!/usr/bin/env python #-*-coding:utf-8-*- #udp socketserver客户端 import socketHOST127.0.0.1 PORT3214 ssocket.socket(socket.AF_INET,socket.SOCK_DGRAM)data你好&#xff01; s.sendto(data.encode(utf-8),(HOST,PORT))while data!bye:datbwhile len(dat)0:dat,addrs.…

几种分类器小结

朴素贝叶斯分类器是假设数据样本特征完全独立&#xff0c;以贝叶斯定理为基础的简单概率分类器。AdaBoost算法的自适应在于前一个分类器产生的错误分类样本会被用来训练下一个分类器&#xff0c;从而提升分类准确率&#xff0c;但是AdaBoost算法对于噪声样本和异常样本比较敏感…

socket网络编程tcp

#!/usr/bin/env python #-*-coding:utf-8-*- #tcp 客户端import socketHOST127.0.0.1 POST3214ssocket.socket() try:s.connect((HOST,POST))data你好&#xff01;while data:s.sendall(data.encode(utf-8))datas.recv(1024)print(Receive from Server:\n,data.decode(utf-8))d…

聚类算法篇章总结

主要的距离计算方法包括&#xff1a; 最短距离法(通过样本数值之间的距离计算&#xff0c;然后将距离值最小的样本进行合并的过程)最长距离法中间距离法重心法(重心聚类法&#xff1a;将两个聚类中心点的距离定义为两个类的重心距离&#xff0c;而类的重心为属于该类的样本的平…

socket网络编程多线程

#!/usr/bin/env python #-*-coding:utf-8-*- #多进程 import threading import time def thfun():s0for i in range(30):sitime.sleep(0.1)print(s)class MyThread(threading.Thread):def run(self):s0for i in range(30):sitime.sleep(0.1)print(s)if __name____main__:#ths[t…

学习之道

对待人生的任何事情都要&#xff1a;抓大放小&#xff0c;要事为先 对于一个以前从来没有接触过java的人&#xff0c;java无疑是庞大的&#xff0c;似乎每个领域都可以拓展开来都是一片开阔地&#xff0c;每一个领域要想深入接触到每一个细节所耗费的精力都是巨大的。这个时候大…

socket网络编程ftp

#!/usr/bin/env python #-*-coding:utf-8-*- #ftp客户端 import os import socket import threading import socketserver#下载文件 def get_file(host,port,filepath):ssocket.socket()s.connect((host,port))filepathos.path.join(.,bakc,filepath)fopen(filepath,wb)dataTr…

python类似于java的重写toString方法

python类中的特殊方法&#xff1a; __str__(self)用来重写 people类&#xff1a; class People:所有员工的基类#构造函数def __init__(self, user_id, user_name):self.user_id user_idself.user_name user_name#析构函数def __del__(self):class_name self.__class__.__n…

socket网络编程实现远程备份

#!/usr/bin/env python #-*-coding:utf-8-*- #GUI设计与构建 客户端建立from tkinter import * from tkinter.ttk import * import socket import struct#启动服务 def start(host,port):pass#我的控件 class MyFrame(Frame):def __init__(self,root):super().__init__(root)se…

python正则表达式使用

模板代码&#xff1a; import re #python 自1.5版本增加了re模块&#xff0c;它提供了Perl风格的正则表达式模式 print(re.match(www, www.baidu.com).span()) #在起初位置匹配 line "Cats are smarter than dogs" matchObj re.match( r(.*) are (.*?) .*, line,…

Q-学习,马克尔决策过程:强化学习

马尔可夫决策过程 马尔可夫决策过程是基于马尔可夫过程理论的随机动态系统的最优决策过程。马尔可夫决策过程是序贯决策的主要研究领域。它是马尔可夫过程与确定性的动态规划相结合的产物&#xff0c;故又称马尔可夫型随机动态规划&#xff0c;属于运筹学中数学规划的一个分支…

python对象使用

模板代码&#xff1a; class People:所有员工的基类#构造函数def __init__(self, user_id, user_name):self.user_id user_idself.user_name user_name#析构函数def __del__(self):class_name self.__class__.__name__print(class_name, 销毁)def get_info(self):print(&qu…

机器学习——决策树算法

机器学习——决策树算法原理及案例 标签&#xff1a; 机器学习决策树信息增益基尼指数模型评估 2016-05-04 15:31 43984人阅读 评论(1) 收藏 举报 分类&#xff1a; 机器学习&#xff08;10&#xff09; 版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不…

python运算符重载

重载符模板代码&#xff1a; class Vector:def __init__(self, a, b):self.a aself.b bdef __str__(self):return Vector (%d, %d) % (self.a, self.b)def __add__(self, other):return Vector(self.a other.a, self.b other.b) v1 Vector(2, 10) v2 Vector(5, -2) prin…

机器学习——决策树的实现

#!/usr/bin/env python #-*-coding:utf-8-*- #决策树的建立&#xff0c;训练测试&#xff0c; from sklearn.feature_extraction import DictVectorizer import csv from sklearn import preprocessing from sklearn import tree from sklearn.externals.six import StringIO#读…

python练习代码保存

#codingutf-8 print(中国人) """ Python 保留字&#xff1a;and, exec, not, assert, finally, or, break, for, pass, class, from, print, continue, global, raise, def, if, return, del, import, try, elif, in, while, else, is, with, except, lambda, …

邻近算法(KNN算法)

邻近算法 锁定本词条由“科普中国”百科科学词条编写与应用工作项目 审核 。邻近算法&#xff0c;或者说K最近邻(kNN&#xff0c;k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻&#xff0c;就是k个最近的邻居的意思&#xff0c;说的是每个样本…

python机器学习常用包下载安装以及使用案例汇总

python安装教程&#xff08;Windows系统,python3.7为例&#xff09; https://blog.csdn.net/weixin_40844416/article/details/80889165 在pycharm中切换python版本的方法 https://blog.csdn.net/sgfmby1994/article/details/77876873 Windows下零基础scikit-learn安装(这种方式…