zoukankan      html  css  js  c++  java
  • Python笔记(十二):操作数据库

    (一)      前言

        本文说明如何连接Oracle、MySQL、sqlserver,以及执行sql、获取查询结果等。

    (二)      DB-API

         DB-API阐明一系列所需对象和数据库访问机制的标准。

    Python操作数据库的模块如果遵循DB-API的标准(应该都会遵循这个标准),函数、方法的名称及功能应该是差不多的(下面几张表格列出了部分内容),就是传的参数可能有点区别。

                                                                      connect函数

    connect函数通过connection对象访问数据库。该函数创建并返回一个connection对象。

    参数

    说明

    host

    数据库实例的访问地址(例如:IP实例名)

    user

    用户名

    password

    密码

    database

    数据库名

                                                                     connection对象     

    方法

    说明

    close()

    关闭数据库连接

    commit()

    提交事务

    rollback()

    取消事务

    cursor()

    使用该连接创建并返回一个游标对象(或类游标对象)

                                                                     cursor对象

                                                           (感觉比较重要的就下面这3个)

    方法

    说明

    execute()

    执行SQL

    fetchall()

    获取查询结果(执行select 语句后)

    callproc()

    调用存储过程

                                                                          异常

    异常

    说明

    DataError

    处理数据时出现问题

    OperationalError

    数据库操作执行期间出现问题

    IntegrityError

    数据库关系完整性错误

    ProgrammingError

    SQL执行失败

     

    (三)      模块安装

    Oracle:pip install cx_Oracle  
    Mysql: pip install pymysql
    sql server:https://www.lfd.uci.edu/~gohlke/pythonlibs/ 下载pymssql,然后 pip install xxx.whl。(pip install pymssql 安装不了再用这种方式,上面2个如果安装不了也可以用这种方式去安装)

    (四)      Oracle示例

    从下面3个示例可以看出,代码其实基本相同,只是导入的模块不一样(其他数据库应该也是差不多的)。

    import cx_Oracle
    # 连接数据库,参数:用户名/密码@服务器ip:端口号/实例名
    conn = cx_Oracle.connect('py/password@192.168.4.196:1521/orcl')
    # 创建游标对象
    cur = conn.cursor()
    #执行SQL
    cur.execute("insert into test_py t values('1005','ZS','张三','123456')")
    cur.execute("update test_py t set t.user_name='李四' where t.id='123' ")
    #提交事务
    conn.commit()
    #执行SQL
    cur.execute("select * from test_py")
    #获得查询结果
    row = cur.fetchall()
    print(row)
    #关闭数据库连接
    conn.close()

     

    (五)      MySql示例

     1 import pymysql
     2 
     3 # 连接数据库,host:服务器ip user:用户名 password:密码  database:数据库名
     4 conn = pymysql.connect(host='192.168.4.196', user='root', password='password', database='test')
     5 # 创建游标对象
     6 cur = conn.cursor()
     7 #执行SQL
     8 cur.execute("insert into test_py(id,user_account) values('100','admin')")
     9 cur.execute("update test_py  set user_account = 'test6' where id='123'")
    10 #提交事务
    11 conn.commit()
    12 #执行SQL
    13 cur.execute("select * from test_py")
    14 #获得查询结果
    15 row = cur.fetchall()
    16 print(row)
    17 #关闭数据库连接
    18 conn.close()

    (六)      Sql server 示例

    import pymssql
    
    # 连接数据库,host:服务器ip\实例名 user:用户名 password:密码  database:数据库名
    conn = pymssql.connect(host='192.168.4.196\amsys', user='sa', password='123', database='test')
    # 创建游标对象
    cur = conn.cursor()
    #执行SQL
    cur.execute("insert into test_py(id,user_account) values('100861','admin')")
    cur.execute("update test_py  set user_account = 'test6' where id='123'")
    #提交事务
    conn.commit()
    #执行SQL
    cur.execute("select * from test_py")
    #获得查询结果
    row = cur.fetchall()
    print(row)
    #关闭数据库连接
    conn.close()
  • 相关阅读:
    网络流
    随机化
    sw抄来的主席树
    牛客SQL题解-统计各个部门的工资记录数
    牛客SQL题解-查找所有员工自入职以来的薪水涨幅情况
    牛客SQL题解-查找薪水排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,不能使用order by完成
    牛客SQL题解-查找所有员工的last_name和first_name以及对应的dept_name,也包括暂时没有分配部门的员工
    牛客SQL题解-获取薪水第二多的员工的emp_no以及其对应的薪水salary
    牛客SQL题解-统计出各个title类型对应的员工薪水对应的平均工资avg
    牛客SQL题解-查找employees表所有emp_no为奇数,且last_name不为Mary的员工信息,并按照hire_date逆序排列
  • 原文地址:https://www.cnblogs.com/simple-free/p/8953922.html
Copyright © 2011-2022 走看看