Python简单数据库实现

本篇文章主要就是针对python  连接数据库的入门,是我整理的慕课网上老师的视频以及代码,仅供初学者们参考哈哈哈哈(代码自己适当加入了一些修改)

慕课网网视频链接:http://www.imooc.com/learn/475

首先:慕课网老师使用的是eclipse编写代码,我使用的是pycharm  两者都可用,大家可以随机选择

然后要安装MySQL数据库,官网下载MYSQL便可,具体安装方式,请参考:http://jingyan.baidu.com/article/c45ad29cf2c471051653e249.html安装方式都是相同的,大家随意参考一个就可以(安装好MySQL后,会设置一个密码,大家要切记这个密码,以后在使用python  连接数据库的时候都会使用)

然后这个时候还不行哦,还需要安装python mysql(这个官网下载便可,我记得这个应该是有python版本选择,Python2.7就选择2.7,3.3就选择3.3便可)  

以及sqlyog(这个需要注册码,可以根据下载的型号不同从网上百度注册码,本宝宝都是在百度随机搜索安装的,安装教程链接:http://jingyan.baidu.com/article/47a29f243ca21dc01523994f.html


然后!就开始正式连接啦!

首先要打开sqlyog,连接以及创建方式请参考:http://jingyan.baidu.com/article/8065f87fe31e312330249870.html

在本代码实例中,实现的是一个转账的功能,从源ID中转走相应的钱数去另一个目标ID中。
然后宝宝们需要在这个里面新建一个数据库数据库名字很随意啦,然后在数据库中添加一个名字为account  的表

表的内容类似于:


然后这样就可以啦,这个时候需要打开你的Python编译器,新建一个test.py,然后输入以下代码,这个代码如果哪里还不明白可以去看慕课网老师的视频哦,慕课网上老师给的输入方式,我表示都是失败了,没有办法成功使用,然后我修改了视频中的ID以及钱数的输入方式,大家可以参考一下,然后run以下test.py

#coding:utf8
import sys
import MySQLdb

class TransferMoney:
    def __init__(self,conn):
        self.conn=conn
    def transfer(self,source_acctid,target_acctid,money):
        try:
            self.check_acct(source_acctid)
            self.check_acct(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


    def check_acct(self,source_acctid):
        try:
            cursor = self.conn.cursor()
            sql = "select * from account where id=%s" %source_acctid
            cursor.execute(sql)
            print "check_accis" + sql
            rs = cursor.fetchall()
            if len(rs) != 1:
                raise Exception("账号不存在")
        finally:
            cursor.close()



    def has_enough_money(self, source_acctid, money):
        try:
            cursor = self.conn.cursor()
            sql = "select * from account where id=%s and money>%s" % (source_acctid, money)
            cursor.execute(sql)
            print "has_enough_money" + sql
            rs = cursor.fetchall()
            if len(rs) != 1:
                raise Exception("钱数不够不存在")
        finally:
            cursor.close()

    def reduce_money(self,source_acctid,money):
        try:
            cursor = self.conn.cursor()
            sql = "update account set money=money-%s where id=%s" %(money,source_acctid)
            cursor.execute(sql)
            print "reduce_money" + sql
            rs = cursor.fetchall()
            if cursor.rowcount!=1:
                raise Exception("账号%s减款失败" % source_acctid)
        finally:
            cursor.close()

    def reduce_money(self,source_acctid,money):
        try:
            cursor = self.conn.cursor()
            sql = "update account set money=money-%s where id=%s" %(money,source_acctid)
            cursor.execute(sql)
            print "reduce_money" + sql
            rs = cursor.fetchall()
            if cursor.rowcount!=1:
                raise Exception("账号%s减款失败" % source_acctid)
        finally:
            cursor.close()

    def add_money(self,source_acctid,money):
        try:
            cursor = self.conn.cursor()
            sql = "update account set money=money+%s where id=%s" %(money,source_acctid)
            cursor.execute(sql)
            print "add_money" + sql
            rs = cursor.fetchall()
            if cursor.rowcount!=1:
                raise Exception("账号%s加款失败" % source_acctid)
        finally:
            cursor.close()


if __name__ == "__main__":
    source_acctid,target_acctid ,money = raw_input("请输入转账人的ID以及被收到转账人的ID 以及钱数分别用空号隔开\n").strip().split(' ')
    print source_acctid,target_acctid,money
    conn = MySQLdb.connect(
                          host = '127.0.0.1',
                          user = 'root',
                          passwd = '1015shuxue=',
                          port = 3306,
                          db= 'lctest'
                          )
    tr_money = TransferMoney(conn)
    try:
        tr_money.transfer(source_acctid, target_acctid, money)
    except Exception as e:
        print "出现问题" + str(e)
    finally:
        conn.close()

然后运行便可

运行结果展示:


下图为输入用户的ID,前一个是转账人的ID,后面一个是被转账人的ID,然后是钱数。



这个时候再打开SQLyog,并点击刷新按钮,可以看到这时的数据库已经有了变化,从下面这张图可以看到,钱数变化了。




希望能帮到大家哦!爱你们!

阅读更多
博主设置当前文章不允许评论。

博主推荐

换一批

没有更多推荐了,返回首页