一、基础知识
1、MySQL-python的安装
下载,然后 pip install 安装包
2、python编写通用数据库程序的API规范
(1)、数据库连接对象 connection,建立python客户端与数据库的网络连接,创建方法为 MySQLdb.Connect(参数)
参数有六个: host(MySQL服务器地址,一般本地为127.0.0.1)
port(MySQL服务器端口号)
user(用户名)
passwd(密码)
db(数据库名称)
charset(连接编码)
connection的方法: cursor()使用该连接并返回游标
commit()提交当前事务
rollback()回滚当前事务
close()关闭连接
(2)、数据库游标对象cursor,用于执行查询和获取结果
方法:execute(op[,args])执行一个数据库查询 和 命令
fetchone()取得结果集的下一行
fetchmany(size)获取结果集的下几行
fetchall()获取结果集中剩下的所有行
rowcount 最近一次execute返回数据的行数或影响行数
close()关闭游标对象
connection与cursor:connection相当于python与MySQL之间的路,而cursor相当于路上的运输车来传送命令与结果。
3、简单命令:
select 查询数据:sql="select * from 表名 所查项目"
insert 插入数据:sql=“insert into 表名 所插项目”
update 更改数据: sql=“updata 表名 set 所改项目 ”
delete 删除数据: sql=“delete from 表名 所删项目”
where也是sql命令的关键存在,通常是 where 表头=列名 来定位那一列
4、事务
访问和更新数据库的一个程序执行单元,所执行的命令,都可以称为事务
具有原子性,一致性,隔离性,持久性
事务执行:
conn.commit() 正常结束事务
conn.rollback() 异常结束事务,对事务进行回滚,若程序执行单元中的连续的操作在进行中出错,之前的操作还原。
简单操作过程: 开始 → 创建connection →获取cursor → 程序执行单元 → 关闭cursor → 关闭connection → 结束
二、模拟银行转账系统代码
三、问题解决
1、sys.argv[ ]
因为教学视频中用的IDE是MyEclipse,最后用run.Configuration 输入参数,而我用的是pycharm,表示笨的找不到还是其实它没有!
所以选择用raw_input() 在执行过程中输入参数
其实有去了解sys.argv[ ],但还是懂不太清楚。
2、 mysql_exceptions.IntegrityError: (1062, "Duplicate entry '7' for key 'PRIMARY'")
这个错误表示你所要插入的数据已经存在,最好去观察一下数据库的数据与自己的程序操作是否有矛盾
3、MySql 建表或输入数值时出错:1170-BLOB/TEXT column‘name’used in key specification without a key length
错误信息为BLOB或者TEXT字段使用了未指定键值长度的键
解决方法:设置其他为主键 或 将数据形式改为varchar
具体解释网址:http://myhblog1989.blog.163.com/blog/static/183225376201110875818884/
4、TypeError: 'post' is an invalid keyword argument for this function
错误原因:TypeError: “post”是这个函数的无效参数
这个问题错的很无语,一时脑子进水把 “port”=3306 写成了“post”=‘3306’
5、1054, "Unknown column 'acctid' in 'where clause'
错误原因:在where子句中找不到“acctid”列
呵呵,上个错误脑子进的水没排出来,把表头写错了…………
6、另外,还有一个错误是手动输入的减款,收款人设为字母或汉字时找不到
可能是我代码或数据库建表时的设定问题,表示在字符转换和数据库这方面还是小白一枚,继续奋斗吧!
7、MySQL数据库的启动
计算机 → 右键 → 管理 → 服务和应用程序 → 服务 → 找到MySQL → 右键启动
四、具体执行显示
1、数据库 tr_money 表的初始状态
2、代码执行,输入减款人,收款人,转款数额
3、执行,结果出现代码中特意 print 的操作进程显示
4、数据库 tr_money 表执行后状态