-
机查看全部
-
python DB API包含的内容:1、数据库连接对象connection 2、数据库交互对象cursor 3、 数据库异常类exception
查看全部 -
1、数据库存储功能
2、客户端,业务逻辑层,数据访问层,数据库(底层,核心技术)
Python访问DB的官方接口规范
Python开发DB程序的开发环境
Python访问DB的connection,curor两大对象
Python执行增,删,改,查操作的实例操作
完整实例: 银行转账实现
查看全部 -
银行转账实例:账户A给账户B转账操作
# coding:utf8 import sys import MySQLdb def check_acct_available(self, acctid): cursor = self.conn.cursor() try: sql = "select * from account where acctid=%s" % acctid cursor.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 rs = cursor.fetchall() #把结果集放入变量 if cursor.rowcount != 1: #检验update看影响多少条数据!! 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 rs = cursor.fetchall() #把结果集放入变量 if cursor.rowcount != 1: #检验update看影响多少条数据!! raise Exception("账号%s加款失败" % acctid) finally: cursor.close() class TransferMoney(object): def __init__(self, conn): #类的构造函数,传入参数conn self.conn = conn def transfer(self, source_acctid, target_acctid, money): #实现transfer方法 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 e if __name__ == "__main__": #脚本执行的入口 source_acctid = sys.argv[1] #设置三个参数:付款人id,收款人id,转账金额 target_acctid = sys.argv[2] money = sys.argv[3] conn = MySQLdb.Connect(host='127.0.0.1', user='root', passwd='123456', port=3306, db='imooc') #创建数据库的connection tr_money = TransferMoney(conn) #创建转账操作的对象,使用TransferMoney类来实现 try: tr_money.transfer(source_acctid, target_acctid, money) except Exception as e: print "出现问题:" + str(e) finally: #无论如何,关闭连接 conn.close()
查看全部 -
mysql的存储引擎包括:MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDBCluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等,其中InnoDB和BDB提供事务安全表,其他存储引擎都是非事务安全表。
最常使用的2种存储引擎:
1.Myisam是Mysql的默认存储引擎,当create创建新表时,未指定新表的存储引擎时,默认使用Myisam。每个MyISAM在磁盘上存储成三个文件。文件名都和表名相同,扩展名分别是.frm(存储表定义)、.MYD(MYData,存储数据)、.MYI(MYIndex,存储索引)。数据文件和索引文件可以放置在不同的目录,平均分布io,获得更快的速度。
2.InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比Myisam的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。查看全部 -
事务:execute操作的集合
提交:让事务中的所有操作同时生效-->正常结束事务conn.commit()
回滚:整个操作的集合回到没有执行的状态-->异常结束事务conn.rollback
查看全部 -
cursor方法
查看全部 -
MySQLdb.Connect 参数
查看全部 -
为什么需要关闭 cursor connection ?
因为connection 是网络资源 如果不关闭的话 会造成数据库性能的问题
查看全部 -
Python DB API包含的内容
查看全部 -
Python DB API :Python访问数据库的统一接口规范
https://www.python.org/dev/peps/pep-0249/
查看全部 -
Python DB API 是为了解决接口程序混乱的局面的产物
查看全部 -
课程介 绍
查看全部 -
数 据 流
查看全部 -
Python访问数据库的统一接口规范:
https://www.python.org/dev/peps/pep-0249
查看全部
举报