python 操作MySQL数据库
来源:互联网 发布:单片机最小系统是什么 编辑:程序博客网 时间:2024/06/05 10:23
银行转账demo
思路:
- 首先要有一个表,存储转账人id和钱数,收款人的id和钱数。建表参考文章末尾创建数据表,并插入数据的代码。
- 验证两人是否存在,验证出款热年钱数是否大于转账钱数,最后一人出款,一人收款。
- 因此代码分为两大部分,主函数和类。类里边又包含各操作方法,和所有方法的调用执行。
知识点:
- python 操作数据库,要安装一个Python和数据库交互的包MySQL-python,然后我们就可以使用MySQLdb这个包进行数据库操作了。
- cursor() – 获取操作游标
- execute(self, nameid, money) – 执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数
- fetchall() – 返回查询到的所有记录
- rollback() – 回滚当前游标的所有操作,即当做什么也没发生
- 关闭数据库连接 , 需要分别的关闭指针对象和连接对象.
cursor.close() 、conn.close() - 在执行完插入或删除或修改操作后,需要调用一下conn.commit()方法进行提交.这样,数据才会真正保存在数据库中.
#!/usr/bin/python# Filename:three.pyimport sysimport MySQLdb#类class hq(object): def __init__(self,conn): self.conn = conn #验证两人是否存在 def cunzai(self,nameid): cursor = self.conn.cursor() try: sql="select * from account where nameid=%s" %nameid cursor.execute(sql) print "cunzai:" + sql rs = cursor.fetchall() if len(rs) !=1: raise Exception("%s bucunzai" % nameid) finally: cursor.close() #验证出款人钱够不够 def enough_money(self,nameid,money): cursor = self.conn.cursor() try: sql = "select * from account where nameid=%s and money>%s" % (nameid,money) cursor.execute(sql) print "enough_money:" + sql rs = cursor.fetchall() if len(rs) !=1: raise Exception("%s not have enough money" % nameid) finally: cursor.close() #减钱 def reduce_money(self,nameid,money): cursor = self.conn.cursor() try: sql = "update account set money=money-%s where nameid= %s " % (money,nameid) cursor.execute(sql) print "reduce_money:" +sql if cursor.rowcount !=1: raise Exception("%s reduce money fail" % nameid) finally: cursor.close() #加钱 def add_money(self,nameid,money): cursor = self.conn.cursor() try: sql = "update account set money=money+%s where nameid= %s " % (money,nameid) cursor.execute(sql) print "add money:" + sql if cursor.rowcount !=1: raise Exception("%s add money fail" % nameid) finally: cursor.close()#触发所有 def transfer(self,source_acctid,target_acctid,money): try: self.cunzai(source_nameid) self.cunzai(target_nameid) self.enough_money(source_nameid,money) self.reduce_money(source_nameid,money) self.add_money(target_nameid,money) self.conn.commit() except Exception as e: self.conn.rollback() raise e#如果出现异常,就回滚当前游标的所有操作,并抛出异常#主函数if __name__ == "__main__": conn = MySQLdb.Connect( host = 'localhost', port = 3306, user = 'root', passwd = '', db = 'mytest', charset = 'utf8' ) source_nameid = sys.argv[1] target_nameid = sys.argv[2] money = sys.argv[3] #从命令行中获取三个参数分别作为出款人,收款人,转账金额 tr_money = hq(conn) try: tr_money.transfer(source_nameid,target_nameid,money) except Exception as e: print "yichang" , str(e) finally: conn.close()
命令行代码如下(例如该文件名称为test . py):
$ python test.py 1 2 100#1给2转账100
创建数据表,并插入数据
#连接数据库conn = MySQLdb.Connect( host = 'localhost', port = 3306, user = 'root', passwd = '', db = 'mytest', charset = 'utf8' )cursor = conn.cursor()#创建一个表存储数据sql_create = "create table if not exists account(nameid int, money varchar(100)) "#插入两条数据sql_insert1 = "insert into account(nameid,money) values(13,120)"sql_insert2 = "insert into account(nameid,money) values(14,10)"#执行上述sql语句cursor.execute(sql_create)cursor.execute(sql_insert1)cursor.execute(sql_insert2)conn.close()
参考慕课网python教程
如果您有什么问题或建议,欢迎留言…^.^
1 0
- Python操作Mysql数据库
- python操作MySQL数据库
- python操作MySQL数据库
- python操作MySQL数据库
- python操作MySQL数据库
- python操作MySQL数据库
- python操作MySQL数据库
- python操作MySQL数据库
- python操作MySQL数据库
- python操作MySQL数据库
- python 操作mysql 数据库
- python操作mysql数据库
- python 操作 mysql数据库
- python操作MySQL数据库
- python操作MySQL数据库
- Python操作MySQL数据库
- Python操作mysql数据库
- python操作MySQL数据库
- Java注解总结
- LibRIL 运行机制
- enum 枚举的作用
- android 动态加载框架 快速使用
- Hadoop的容错性
- python 操作MySQL数据库
- C++学习笔记4--表达式
- CI框架教程1——优化验证码机制(或验证码辅助函数)
- CRC的校验原理及硬件、软件算法实现
- OpenCV 基本函数和类型总结
- MVC实现伪静态
- sqlmap tamper 细读
- css tab的多种样式
- 详解 Dagger2 系列,原来 Dagger2 如此简单