zoukankan      html  css  js  c++  java
  • 高德4Python对Access读写操作

    高德4Python对Access读写操作

     

    工具库安装

    在此基础上安装pyodbc工具库,在cmd窗口执行如下语句安装

    pip install pyodbc

    如果安装了anaconda也可以使用conda install pyodbc

    一、可以利用win32.client模块的COM组件访问功能,通过ADODB操作Access的文件。

    1、导入模块

    import win32com.client

    2、建立数据库连接

    conn = win32com.client.Dispatch(r"ADODB.Connection")
    DSN = 'PROVIDER = Microsoft.Jet.OLEDB.4.0;DATA SOURCE = test.mdb'
    conn.Open(DSN)

    3、打开一个记录集

    rs = win32com.client.Dispatch(r'ADODB.Recordset')
    rs_name = 'MEETING_PAPER_INFO'
    rs.Open('[' + rs_name + ']', conn, 1, 3)

    4、对记录集操作

    rs.AddNew()  #添加一条新记录
    rs.Fields.Item(0).Value = "data"  #新记录的第一个字段设为"data"
    rs.Update()  #更新

    5、用SQL语句来增、删、改数据

    复制代码
    # 增
    sql = "Insert Into " rs_name + " (id, innerserial, mid) Values ('002133800088980002', 2, '21338')"  #sql语句
    conn.Execute(sql)  #执行sql语句
    # 删
    sql = "Delete * FROM " + rs_name + " where innerserial = 2"
    conn.Execute(sql)
    # 改
    sql = "Update " + rs_name + " Set mid = 2016 where innerserial = 3"
    conn.Execute(sql)
    复制代码

    6、查:遍历记录

    复制代码
    rs.MoveFirst()  #光标移到首条记录
    count = 0
    while True:
        if rs.EOF:
            break
        else:
            for i in range(rs.Fields.Count):
                #字段名:字段内容
                print(rs.Fields[i].Name, ":", rs.Fields[i].Value)
            count += 1
        rs.MoveNext()
    复制代码

    7、关闭数据库

    conn.Close()

    二、利用pypyodbc模块

    1.导入模块

    import pypyodbc

    2.建立数据库连接

    复制代码
    #建立数据库连接
    def mdb_conn(db_name, password = ""):
        """
        功能:创建数据库连接
        :param db_name: 数据库名称
        :param db_name: 数据库密码,默认为空
        :return: 返回数据库连接
        """
        str = 'Driver={Microsoft Access Driver (*.mdb)};PWD' + password + ";DBQ=" + db_name
        conn = pypyodbc.win_connect_mdb(str)
    
        return conn
    复制代码

    3.创建游标

    cur = conn.cursor()

    4.用sql语句来增、删、改、查数据

    复制代码
    #增
    def mdb_add(conn, cur, sql):
        """
        功能:向数据库插入数据
        :param conn: 数据库连接
        :param cur: 游标
        :param sql: sql语句
        :return: sql语句是否执行成功
        """
        try:
            cur.execute(sql)
            conn.commit()
            return True
        except:
            return False
    
    #删
    def mdb_del(conn, cur, sql):
        """
        功能:向数据库删除数据
        :param conn: 数据库连接
        :param cur: 游标
        :param sql: sql语句
        :return: sql语句是否执行成功
        """
        try:
            cur.execute(sql)
            conn.commit()
            return True
        except:
            return False
    
    #改
    def mdb_modi(conn, cur, sql):
        """
        功能:向数据库修改数据
        :param conn: 数据库连接
        :param cur: 游标
        :param sql: sql语句
        :return: sql语句是否执行成功
        """
        try:
            cur.execute(sql)
            conn.commit()
            return True
        except:
            return False
    
    #查
    def mdb_sel(cur, sql):
        """
        功能:向数据库查询数据
        :param cur: 游标
        :param sql: sql语句
        :return: 查询结果集
        """
        try:
            cur.execute(sql)
            return cur.fetchall()
        except:
            return []
    复制代码

    5.关闭游标

    cur.close()

    6.关闭数据库连接

    conn.close()

    附:pypyodbc模块的完整测试代码

    复制代码
    # -*- coding:utf-8 -*-
    __author__ = 'mayi'
    
    #导入模块
    import pypyodbc
    
    #定义conn
    def mdb_conn(db_name, password = ""):
        """
        功能:创建数据库连接
        :param db_name: 数据库名称
        :param db_name: 数据库密码,默认为空
        :return: 返回数据库连接
        """
        str = 'Driver={Microsoft Access Driver (*.mdb)};PWD' + password + ";DBQ=" + db_name
        conn = pypyodbc.win_connect_mdb(str)
    
        return conn
    
    #增加记录
    def mdb_add(conn, cur, sql):
        """
        功能:向数据库插入数据
        :param conn: 数据库连接
        :param cur: 游标
        :param sql: sql语句
        :return: sql语句是否执行成功
        """
        try:
            cur.execute(sql)
            conn.commit()
            return True
        except:
            return False
    
    #删除记录
    def mdb_del(conn, cur, sql):
        """
        功能:向数据库删除数据
        :param conn: 数据库连接
        :param cur: 游标
        :param sql: sql语句
        :return: sql语句是否执行成功
        """
        try:
            cur.execute(sql)
            conn.commit()
            return True
        except:
            return False
    
    #修改记录
    def mdb_modi(conn, cur, sql):
        """
        功能:向数据库修改数据
        :param conn: 数据库连接
        :param cur: 游标
        :param sql: sql语句
        :return: sql语句是否执行成功
        """
        try:
            cur.execute(sql)
            conn.commit()
            return True
        except:
            return False
    
    #查询记录
    def mdb_sel(cur, sql):
        """
        功能:向数据库查询数据
        :param cur: 游标
        :param sql: sql语句
        :return: 查询结果集
        """
        try:
            cur.execute(sql)
            return cur.fetchall()
        except:
            return []
    
    if __name__ == '__main__':
        pathfile = 'test.mdb'
        tablename = 'prov'
        conn = mdb_conn(pathfile)
        cur = conn.cursor()
    
        #增
        sql = "Insert Into " + tablename + " Values (33, 12, '天津', 0)"
        if mdb_add(conn, cur, sql):
           print("插入成功!")
        else:
           print("插入失败!")
    
        #删
        sql = "Delete * FROM " + tablename + " where id = 32"
        if mdb_del(conn, cur, sql):
           print("删除成功!")
        else:
           print("删除失败!")
    
        #改
        sql = "Update " + tablename + " Set IsFullName = 1 where ID = 33"
        if mdb_modi(conn, cur, sql):
           print("修改成功!")
        else:
           print("修改失败!")
    
        #查
        sql = "SELECT * FROM " + tablename + " where id > 10"
        sel_data = mdb_sel(cur, sql)
        print(sel_data)
    
        cur.close()    #关闭游标
        conn.close()   #关闭数据库连接
    复制代码
  • 相关阅读:
    Spring个人冲刺阶段总结
    开学测试代码
    《人月神话》读后感(三)
    《人月神话》读后感(二)
    《人月神话》读后感(一)
    记账本小程序7天开发记录(第七天)
    记账本小程序7天开发记录(第六天)
    记账本小程序7天开发记录(第五天)
    记账本小程序7天开发记录(第四天)
    记账本小程序7天开发记录(第三天)
  • 原文地址:https://www.cnblogs.com/xinxihua/p/14461239.html
Copyright © 2011-2022 走看看