zoukankan      html  css  js  c++  java
  • Python DB API

    Python DB-API 2.0规范 请参考 python PEP-0249.

    https://www.python.org/dev/peps/pep-0249/

    1、Python DB API包含:

    数据库连接对象:connection

    数据库交互对象:cursor

    数据库异常类:exceptions

    2、开发数据库程序流程:

    1)创建connection对象,获取cursor

    2)使用cursor执行SQL

    3)使用cursor获取数据、判断执行状态

    4)提交事务 或者 回滚事务

    使用Python DB AP访问数据库流程:

    开始------->创建数据库连接connection------>获取cursor------>处理数据(增删查改)------->关闭cursor------>关闭connection------>结束

    3、模块接口(Module Interface):
    数据库的访问是通过连接对象(connection objects)来实现的。程序模块中必须提供以下形式的连接对象构造函数:

    connect(parameters...)

        数据库连接对象的构造函数,返回值为Connection对象实例。 由于目的数据库不同,函数接收数量不等的一些参数。
        模块中必须定义下面这些模块级的变量:

    apilevel:字符串常量,表明支持的DB API版本。

        目前只允许取值'1.0'和'2.0'。如果没有定义本常量,默认为DB-API 1.0。


    threadsafety:整数常量,表明模块支持的线程安全级别,可能的值为:

      0 线程不安全,线程不能共享模块。
      1 线程可以共享模块,但是不能共享连接对象(connections)。
      2 线程可以共享模块和连接对象。
      3 线程安全,线程间可以共享模块、连接对象以及游标对象(module,connections,cursors)。

      上文中共享的意思是两个线程在没有使用互斥信号(mutex semaphore)锁的情况下, 同时使用一个资源。
      要注意的是,你并不总能使用互斥信号来确保一个外部资源线程安全,这是因为外部资源很有可能依赖于一
      个全局变量或是其他的外部资源,然而这些是你不能控制的。

    paramstyle:字符串常量声明模块使用的SQL语句中的参数引出方式。可能的取值如下[2]:

      'qmark' 问号方式,例如:'...WHERE name=?'
      'numeric' 序数方式,例如:'...WHERE name=:1'
      'named' 命名方式,例如:'...WHERE name=:name'
      'format' 通用方式(ANSI C printf format codes)例如:'...WHERE name=%s'
      'pyformat' python扩展方式(Python extended format codes),例如:'...WHERE name=%(name)s'

    模块中应该按照下面所阐述的错误类别和层次关系来处理各种错误信息

    错误类的层次关系:

    StandardError
    |__Warning
    |__Error
       |__InterfaceError
       |__DatabaseError
          |__DataError
          |__OperationalError
          |__IntegrityError
          |__InternalError
          |__ProgrammingError
          |__NotSupportedError

    注:这些例外(Exceptions)的值(错误信息)并没有明确的定义,但是它们应该能够给用户指出足够好的错误提示。

    【参考文献】

    PEP-0249 简单的中文翻译:https://blog.csdn.net/dajianshi/article/details/7482201

    【引用请声明出处,yvivid】https://www.cnblogs.com/yvivid/p/python_DB-API.html

  • 相关阅读:
    vue项目index.html , main.js的关系
    vue项目是如何加载入口文件main.js的
    解决Mysql密码修改后不能登录的问题
    解决IDEA右侧maven不显示方法
    (转)sql语句定义和执行顺序
    关于我
    css中好用的clamp()函数
    vue中子组件使用$emit传值的种种情况
    我的大学 -詹书庭
    自定义组件使用v-model
  • 原文地址:https://www.cnblogs.com/yvivid/p/python_DB-API.html
Copyright © 2011-2022 走看看