Python学习笔记 - MySql的使用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python学习笔记 - MySql的使用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3899字,纯文字阅读大概需要6分钟。
内容图文
![Python学习笔记 - MySql的使用](/upload/InfoBanner/zyjiaocheng/500/1868acd7f11d46a6986396528093698d.jpg)
三、范例
MySql脚本
-- ---------------------------- -- Table structure for account -- ---------------------------- DROP TABLE IF EXISTS `account`; CREATE TABLE `account` ( `acctid` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `money` decimal(50, 0) NULL DEFAULT NULL ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of account -- ---------------------------- INSERT INTO `account` VALUES (‘1‘, ‘张三‘, 50); INSERT INTO `account` VALUES (‘2‘, ‘李四‘, 150);
Python程序
# coding:utf8 import sys import pymysql class 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‘" % acctid print("check_acct_available:" + sql) cursor.execute(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) print("has_enough_money:" + sql) cursor.execute(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) print("reduce_money:" + sql) cursor.execute(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) print("add_money:" + sql) cursor.execute(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() print("transfer出现异常:" + str(e)) raise e def main(): source_acctid = sys.argv[1] print("转出帐号=" + source_acctid) target_acctid = sys.argv[2] print("转入帐号=" + target_acctid) money = sys.argv[3] print("金额=" + money) # 连接数据库 conn = pymysql.Connect( host=‘localhost‘, port=3306, user=‘root‘, passwd=‘root‘, db=‘OtkDb‘, charset=‘utf8‘) tr_money = TransferMoney(conn) try: tr_money.transfer(source_acctid, target_acctid, money) except Exception as e: print("main出现异常:" + str(e)) finally: conn.close() if __name__ == ‘__main__‘: main()
四、运行效果
PS H:\web\Python> & python h:\web\Python\01.MySql\db.py 1 2 50 转出帐号=1 转入帐号=2 金额=50 check_acct_available:select * from account where acctid=‘1‘ check_acct_available:select * from account where acctid=‘2‘ has_enough_money:select * from account where acctid=‘1‘ and money>50 reduce_money:update account set money=money-50 where acctid=‘1‘ add_money:update account set money=money+50 where acctid=‘2‘
PS H:\web\Python> & python h:\web\Python\01.MySql\db.py 1 2 50 转出帐号=1 转入帐号=2 金额=50 check_acct_available:select * from account where acctid=‘1‘ check_acct_available:select * from account where acctid=‘2‘ has_enough_money:select * from account where acctid=‘1‘ and money>50 transfer出现异常:帐号1没有足够的金额 main出现异常:帐号1没有足够的金额
参考:
http://www.cnblogs.com/woider/p/5926744.html
Python学习笔记 - MySql的使用
标签:cursor 参考 python程序 密码 执行 支持 影响 ini close
本文系统来源:https://www.cnblogs.com/chuancheng/p/8456918.html
内容总结
以上是互联网集市为您收集整理的Python学习笔记 - MySql的使用全部内容,希望文章能够帮你解决Python学习笔记 - MySql的使用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。