第十六节 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. Python中使用 Selenium 实现网页截图实例

    Selenium 是一个可以让浏览器自动化地执行一系列任务的工具,常用于自动化测试.不过,也可以用来给网页截图.目前,它支持 Java.C#.Ruby 以及 Python 四种客户端语言.如果你使用 ...

  2. TSharding源码阅读

    需要的背景知识:Spring 和Mybatis 实现原理和源码, javaassist字节码增强的使用, java及设计模式的使用 1 读取解析数据库配置文件 DataSourceScanner实现了 ...

  3. We7的区县站点群建设策略

    一.解决门户和委办局.乡镇的互动 构建以区县政府门户为主站,各委办局.乡镇为子站的站点群体系: 基于统一的信息体系,实现分级授权.统一管理的功能.各网站能够有独立的页面展现和管理后台,同一时候网站之间 ...

  4. LNMP环境搭建(一:nginx)

    1.从nginx官网获取源码包 # cd /usr/local/src # wget http://nginx.org/download/nginx-1.10.3.tar.gz 2.解压源码包 # t ...

  5. 手机测试常见的BUG解析

    今天总结之前学习到关于在手机软件测试过程中经常出现的一些现象,这些现象都是什么原因导致的,我们应该如何去抓取LOG,抓取的LOG的路径在哪里 下边我们来看 1. 手机遇到   “应用无响应” 有两个原 ...

  6. 记录-配置tomcat不加项目名即可访问项目

    环境:tomcat 在eclipse中  打开Servers  下的server.xml文件,在最下方你会看到类似 <Context docBase="/vankeplatform&q ...

  7. POJ 2856 Y2K Accounting Bug【简单暴力】

    链接: http://poj.org/problem?id=2586 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=26733#probl ...

  8. git reset和git revert

    1 git reset commit-id 直接回到某次提交,该次commit-id之后的提交都会被删除. --hard,将index和本地都恢复到指定的commit版本. 2 git revert ...

  9. 三款查看class文件结构的工具

    classpy JavaClassViewer jclasslib

  10. 14.Django自带的admin配置

    admin有自己的默认显示,要自定义显示的样式,一般需要自己定义一个类,在自己定义的类里进行相应的设置,然后,把自己的类交给装饰器 交给装饰器的方法有两种: 1.@admin.register(Pub ...