第十六节 MySQLdb

  • win64位安装python-mysqldb1.2.5

  • ubuntu下安装MySQLdb

    sudo apt-get install python-MySQLdb
  • 导入MySQLdb库

    import MySQLdb
  • 创建数据库连接

    conn = MySQLdb.connect(host="localhost",user="root",passwd="123456",db="test",charset="utf8")
  • connect对象属性
    • commit():如果数据库表进行了修改,提交保存当前的数据。当然,如果此用户没有权限就作罢了,什么也不会发生。
    • rollback():如果有权限,就取消当前的操作,否则报错。
    • cursor([cursorclass]):游标指针。
  • 创建游标(指针)cursor

    cur = conn.cursor()
  • cursor执行命令的方法:
    • execute(query, args):执行单条sql语句。query为sql语句本身,args为参数值的列表。执行后返回值为受影响的行数。
    • executemany(query, args):执行单条sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数
  • 在数据表中插入一条记录

    cur.execute("insert into users (username,password,email) values (%s,%s,%s)",("python","123456","python@gmail.com"))
  • 在数据表中插入多条记录

    cur.executemany("insert into users (username,password,email) values (%s,%s,%s)",(("google","111222","g@gmail.com"),("facebook","222333","f@face.book"),("github","333444","git@hub.com"),("docker","444555","doc@ker.com")))
  • 提交数据库操作

    conn.commit()
  • 查询数据

    cur.execute("select * from users")
    • cursor对象获取数据的方法

      • fetchall(self):接收全部的返回结果行.
      • fetchmany(size=None):接收size条返回结果行.如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据.
      • fetchone():返回一条结果行.
      • scroll(value, mode='relative'):移动指针到某一行.如果mode='relative',则表示从当前所在行移动value条,如果mode='absolute',则表示从结果集的第一行移动value条.

        cur.execute("select * from users")
        lines = cur.fetchall()
        for line in lines:
        print line cur.execute("select * from users where id=1")
        line_first = cur.fetchone() #只返回一条
        print line_first cur.execute("select * from users")
        print cur.fetchall()
  • 游标cursor的操作

    • cur.scroll(n)cur.scroll(n,"relative"):意思是相对当前位置向上或者向下移动,n为正数,表示向下(向前),n为负数,表示向上(向后)

    • 还有一种方式,可以实现“绝对”移动,不是“相对”移动:增加一个参数"absolute"

      cur.scroll(1)
      cur.scroll(-2)
      cur.scroll(2,"absolute") #回到序号是2,但指向第三条
  • 更新数据

    cur.execute("update users set username=%s where id=2",("mypython"))
    conn.commit()
  • 指定数据库

    conn = MySQLdb.connect("localhost","root","123456",port=3306,charset="utf8")    #创建数据库时不指定那个数据库
    conn.select_db("test") #连接创建后再指定
  • 关闭数据库

    cur.close()     #先关闭游标
    conn.close() #再关闭数据库

第十七节 面向对象

类和对象

  • 面向过程和面向对象的编程

    • 面向过程的编程:函数式编程,C程序等
    • 面向对象的编程:C++,Java,Python等
  • 类和对象:是面向对象中的两个重要概念
    • 类:是对事物的抽象,比如:汽车模型
    • 对象:是类的一个实例,比如:QQ轿车,大客车
  • 范例说明
    • 汽车模型可以对汽车的特征和行为进行抽象,然后可以实例化一台真实的汽车实体出来

Python类定义

  • Python类的定义

    • 使用class关键字定义一个类,并且类名的首字母要大写
    • 当程序员需要创建的类型不能用简单类型表示时就需要创建类
    • 类把需要的变量和函数组合在一起,这种包含也称之为“封装”
  • Python类的结构

    class 类名:
    成员变量
    成员函数 class MyClass():
    first = 123
    def fun(self):
    print "I am function"
  • 对象的创建
    • 创建对象的过程称之为实例化;当一个对象被创建后,包含三个方面的特性:对象的句柄、属性和方法。

      • 句柄用于区分不同的对象
      • 对象的属性和方法与类中的成员变量和成员函数对应

        if __name__ == "__main__":
        myClass = MyClass() #创建类的一个实例
  • 构造函数__init__

    class Person:
    def __init__(self, name, lang, website):
    self.name = name
    self.lang = lang
    self.website = website
  • self是一个很神奇的参数
    • self指向类的一个实例,当实例调用方法时,self就指向这个调用的方法的实例
  • 子类、父类和继承

    # 抽象形状类
    class Shape:
    # 类的属性
    edge = 0
    # 构造函数
    def __init__(self, edge):
    self.edge = edge
    # 类的方法
    def getEdge(self):
    return self.edge
    # 抽象方法
    def getArea(self):
    pass #三角形类,继承抽象形状类
    class Triangle(Shape):
    width = 0
    height = 0
    # 构造函数
    def __init__(self, width, height):
    #调用父类构造函数
    Shape.__init__(self, 3)
    self.width = width
    self.height = height
    #重写方法
    def getArea(self):
    return self.width * self.height / 2 #四边形类,继承抽象形状类
    class Rectangle(Shape):
    width = 0
    height = 0
    # 构造函数
    def __init__(self, width, height):
    #调用父类构造函数
    Shape.__init__(self, 4)
    self.width = width
    self.height = height
    #重写方法
    def getArea(self):
    return self.width * self.height triangle = Triangle(4,5);
    print triangle.getEdge()
    print triangle.getArea() rectangle = Rectangle(4,5);
    print rectangle.getEdge()
    print rectangle.getArea()
  • python支持多继承,但不推荐使用

第二章 python基础(三)的更多相关文章

  1. 第二章 python基础(一)

    第一节 Python文件类型 源代码 Python源代码的文件以“py”为扩展名,由Python程序解释,不需要编译 字节代码 Python源文件经编译后生成的扩展名为“pyc”的文件 编译方法 im ...

  2. 第二章----python基础

    概要:python是一种计算机编程语言,有自己的一套语法,编译器或者解释器负责把符合语法的程序代码翻译成CPU能识别的机器码,然后执行.python使用缩进来组织代码块,Python程序中大小写是敏感 ...

  3. 第二章 Python基础语法

    2.1 环境的安装 解释器:py2 / py3 (环境变量) 开发工具:pycharm 2.2 编码 编码基础 ascii ,英文.符号,8位为一个东西,2**8 unicode ,万国码,可以表示所 ...

  4. 第二章 python基础(二)

    第九节 函数 函数就是完成特定功能的一个语句组,这组语句可以作为一个单位使用,并且给它取一个名字. 可以通过函数名在程序的不同地方多次执行(这通常叫做函数调用),却不需要在所有地方都重复编写这些语句. ...

  5. java面向对象编程——第二章 java基础语法

    第二章 java基础语法 1. java关键字 abstract boolean break byte case catch char class const continue default do ...

  6. [Python笔记][第二章Python序列-复杂的数据结构]

    2016/1/27学习内容 第二章 Python序列-复杂的数据结构 堆 import heapq #添加元素进堆 heapq.heappush(heap,n) #小根堆堆顶 heapq.heappo ...

  7. 第二章Python入门

    第二章 Python入门 2.1.简介 Python是著名的"龟叔"(Guido van Rossum)在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言 Pytho ...

  8. [Python笔记][第二章Python序列-tuple,dict,set]

    2016/1/27学习内容 第二章 Python序列-tuple tuple创建的tips a_tuple=('a',),要这样创建,而不是a_tuple=('a'),后者是一个创建了一个字符 tup ...

  9. [python笔记][第二章Python序列-list]

    2016/1/27学习内容 第二章 Python序列-list list常用操作 list.append(x) list.extend(L) list.insert(index,x) list.rem ...

随机推荐

  1. mac虚拟机搭建自动化环境-wda和python wda client

    尽量升级Xcode到最新版,保持iPhone的版本大于9.3 1.安装webDriverAgent到ios真机 从github上下载代码:git clone https://github.com/fa ...

  2. win10正式版开始菜单无法打开,右边的网络连接、操作中心也打不开

    问题描述: 开机后电脑键盘的win键无响应,鼠标点击菜单栏中的这几个按键也都无响应,但是点击自己固定的应用程序却没有问题,在网上查找尝试了许多资料,终于找到了一个合适的解决方案.现记录如下 解决方案: ...

  3. 多媒体开发之---h264格式slice_header

    从Slice_Header学习H.264 写在前面: $     H.264我是结合标准和毕厚杰的书一块学的.看句法语义时最是头疼,一大堆的元素,很需要耐心.标准中在介绍某个元素的语义时,经常会突然冒 ...

  4. C语言基础知识【数据类型】

    C 数据类型1.在 C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统.变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式.2.C 中的类型可分为以下几种:序号    类 ...

  5. OGEngine教程:字体工具使用

    1.打开 BitmapFont tool,在红框中输入你要显示的字. 2.写完后保存字体文件 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvT3Jhbmdl ...

  6. spring web app的结构

    1 入口是web.xml tomcat加载war的时候会去读该入库文件. 2 web.xml中spring mvc的配置 定义servlet到servlet-mapping之间的映射,org.spri ...

  7. 阿里云+LAMP环境配置

    1. 准备好一键Linux环境的脚本: http://dwz.cn/6Nlexm 2. 运行命令:# yum install lynx tree nmap sysstat lrzsz dos2unix ...

  8. BAPI LIST

    [转自 http://blog.csdn.net/minsenwu/article/details/8432081] 库存管理BAPI 库存: 1. BAPI_MATERIAL_AVAILABILIT ...

  9. Django下MEDIA_ROOT, MEDIA_URL, STATIC_ROOT, STATIC_URL解惑

    Django中settings中的四个设置参数的一些故事: MEDIA_ROOT, MEDIA_URL, STATIC_ROOT, STATIC_URL 1.MEDIA_ROOT与MEDIA_URL ...

  10. Python socket server demo

    #coding:utf-8 from socket import * #开启ip和端口 ip_port = ("192.168.1.103",8088) print ip_port ...