zoukankan      html  css  js  c++  java
  • 零基础学Python--------第11章 使用Python操作数据库

    第11章 使用Python操作数据库

    11.1 数据库编程接口

     在项目开发中,数据库应用必不可少。虽然数据库的种类有很多,如SQLite、MySQL、Oracle等,但是它们的功能基本都是一样的,为了对数据库进行统一的操作,大多数语言都是提供了简单的、标准化的数据库接口(API)。在Python Database API 2.0 规范中,定义了Python数据库API接口的各个部分,如模块接口、连接对象、游标对象、类型对象和构造器、DB API 的可选扩展以及可选的错误处理机制等。下面重点介绍一下数据库API 接口中的连接对象和游标对象。

    11.1.1 连接对象

    数据库连接对象(Connection Object)主要提供获取数据库游标对象和提交、回滚事务的方法,以及关闭数据库连接。

    1. 获取连接对象

    如何获取连接对象呢?这就需要使用connect()函数。该函数有多个参数,具体使用哪个参数,取决于使用的数据库类型。例如,需要访问Oracle数据库和MySQL数据库,则必须同时下载Oracle和MySQL数据库模块。这些模块在获取连接对象时,都需要使用connect()函数。connect()函数常用的参数及说明如表所示。

    connect() 函数常用的参数及说明
    参数 说明
     dsn 数据源名称,给出该参数表示数据库依赖 
    user  用户名 
    password  用户密码 
    host  主机名 
    database  数据库名称 

     例如,使用PyMySQL模块连接MySQL数据库,示例代码如下:

    conn = pymysql.connect(host='localhost',
                           user='user',
                           password='passwd',
                           db='test',
                           charset='utf8',
                           cursorclass=pymysql.cursors.DictCursor)

    说明:上述代码中,pymysql.connect()使用的参数与表中并不完全相同。在使用时,要以具体的数据库模块为准。

    2. 连接对象的方法

    Connect()函数返回连接对象。这个对象表示目前和数据库的会话,连接对象支持的方法如下表所示。

    连接对象方法
    方法名 说明
    close() 关闭数据库连接
    commit() 提交事务
    rollback() 回滚事务
    cursor() 获取游标对象,操作数据库,如执行DML操作,调用存储过程等

    commit()方法用于提交事务,事务主要用于处理数据量大、复杂度高的数据。如果操作的是一系列的动作,比如张三给李四转账,有如下2个操作:

    • 张三账户金额减少
    • 李四账户金额增加

    这是使用事务可以维护数据库的完整性,保证2个操作要么全部执行,要么全部不执行。

    11.1.2 游标对象

    游标对象(Cursor Object)代表数据库中的游标,用于指示抓取数据操作的上下文,主要提供执行SQL语句、调用存储过程、获取查询结果等方法。

    如何获取游标对象呢?通过使用连接对象的cursor()方法,可以获取到游标对象。游标对象的属性如下所示:

    • description:数据库列类型和值的描述信息。
    • rowcount:回返结果的行数统计信息,如SELECT、UPDATE、CALLPROC等。

    游标对象的方法如下:

    游标对象方法
    方法名 说明
    callproc(procname,[,parameters]) 调用存储过程,需要数据库支持
    close() 关闭当前游标
    execute(operation[,parameters]) 执行数据库操作,SQL语句或者数据库命令
    executemany(operation,seq_of_params) 用于批量操作,如批量更新
    fetchone() 获取查询结果集中的下一条记录
    fetchmany(size) 获取指定数量的记录
    fetchall() 获取结果集的所有记录
    nextset() 跳转下一个可用的结果集
    arraysize 指定使用fetchmany()获取的行数,默认为1
    setinputsizes(sizes) 设置在调用execute*()方法时分配的内存区域大小
    seoutputsize(sizes) 设置列缓冲区大小,对大数据数列(如LONGS和BLOBS)尤其有用

    11.3 使用MySQL

    11.3.1 下载安装MySQL

     ……

    11.3.3 连接数据库

  • 相关阅读:
    js直接获取当前windows登陆账号---仅适用于IE
    Windows变量路径与通配符
    IDEA数据库生成Entity 带注释, 默认值
    BIM+区块链在建筑业施工过程结算的应用
    Java中动态规则的实现方式
    Git查看本地仓库关联关系以及清理无效远程分支
    Golang把字符串数组、[]interface{}打乱、切片乱序
    Golang将map数组按照指定字段排序
    Golang把时间和数字相乘报错invalid operation: second * time.Second (mismatched types int and time.Duration)
    Golang获取明日时间及距离明日凌晨的时间差
  • 原文地址:https://www.cnblogs.com/ooo888ooo/p/10360659.html
Copyright © 2011-2022 走看看