zoukankan      html  css  js  c++  java
  • python与MySQL数据库

    python与MySQL数据库

    慕课网连接

    我使用的软件:python2.7 + MySQL+ Navicat for MySQL + Atom

    注意:你的数据库表格类型的引擎为:InnoDB ;字符集:utf8 ;排序规则:utf8_general_ci


    Python开发MySQL的思想:

    图片来自慕课网视频截图:

    其中我使用的编辑器是Atom,MySQL数据库的客户端是Navicat for MySQL。

    python DB API

    思想:

    • 由connection建立数据库连接
    • 由cursor执行SQL语句和获取数据

    具体操作:

    1. 创建connection对象
    2. 获取cursor
    3. 使用cursor执行SQL语句
    4. 使用cursor获取数据,并判断执行状态
    5. 提交事务或者回滚事务
    6. 关闭cursor ,关闭connection

    创建connection对象:

    通过下面这一行代码进行与数据库的连接。

    	import MySQLdb
    
    	    conn = MySQLdb.Connect(
     	    host = '127.0.0.1',
    	    port = 3306,
    	    user = 'your user_name',
    	    passwd = 'your passwd',
    	    db = 'your db_name',
    	    charset = 'utf8'
        )
    

    获取cursor:

    cursor 是一个游标,用于指定数据库的表中的某一行

    	cursor = conn.cursor()
    

    使用cursor执行SQL语句:

    cursor执行SQL语句就相当于在数据库中的查询操作:

    	sql_sentence = 'your sql_sentence'	
    	cursor.execute(sql_sentence) 
    

    通过上面这行代码既可以对数据库进行增,删,改,查等操作


    使用cursor获取数据,并判断执行状态:

    获取数据有三种方式:

    	rs = cursor.fetchall()		 //获取当前游标往下的所有数据
    	rs = cursor.fetchone()		//获取当前游标所在行的数据
    	rs = cursor.fetchmany(x) 	//获取当前游标往下 x 行的数据
    

    此后即可以通过对rs的操作,输出我们所需要的数据,例如:

    	for row in rs:
                 print "userid=%s,username=%s" %row	
    

    提交事务或者回滚事务:

    事务的概念就是一组需要同时完成的事情,例如往a转钱给b,那么就需要有同时判断两个账户是否存在,a是否有足够的钱,若有,a扣款的同时b要存款等。

    这是一系列要同时考虑的事情,如果在中间不满足条件,则需要回滚事务,即返回到之前的初始状态。

    	conn.commit()  	 //提交事务
    	conn.rollback()  //回滚事务
    

    在此,我们通常将某一事务放在一个try的代码块中,当出现错误的时候,在except块中报错以及回滚事务:

        def transfer(self,sourse_acctid,target_acctid,money):  // 很普通的一个转钱的函数
            try:
                self.check_acct_available(sourse_acctid)
                self.check_acct_available(target_acctid)
                self.has_enough_money(sourse_acctid,money)
                self.reduce_money(sourse_acctid,money)
                self.add_money(target_acctid,money)   //在此列函数调用中,如果出现错误,会将错误信息给Exception,同时回滚事务;如果顺利执行,则进行下一步:提交事务。
    
                self.conn.commit()  //提交事务
    
            except Exception as e:
    
                self.conn.rollback()  //回滚事务
    
                raise e //报错
    

    关闭cursor,关闭connection:

    为了防止浪费资源,在每次游标进行完操作后,都要关闭游标,在对数据库完成操作后要关闭数据库连接。

    	cursor.close()
    	conn.close()
    

    注意事项:

  • 相关阅读:
    swoole中退出、异常与错误的处理笔记
    centos6.9+lnmp1.5环境部署swoole记录
    linux递归查找文件内容并替换
    使用FFMPEG 压缩png图片 与tinypng压缩结果对比
    XAMPP安装PHP_GMP
    Yii2 输出图片相关
    (xampp)lampp 下配置https(ssl)自签双向认证以后 apache无法启动解决方案
    PHP正则表达式匹配俄文字符
    windows 7 php 7.1 命令行 执行 中文文件名 的PHP文件
    centos6.9 安装完xampp 7.2.0后,执行/opt/lampp/lampp报错
  • 原文地址:https://www.cnblogs.com/Huzr/p/9079236.html
Copyright © 2011-2022 走看看