• 高德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()   #关闭数据库连接
    复制代码
  • 相关阅读:
    jvisualm 结合 visualGC 进行jvm监控,并分析垃圾回收
    linux 查看服务器cpu 与内存配置
    arthas 使用总结
    selinux contexts 安全上下文的临时更改
    Android 8.1 Doze模式分析(五) Doze白名单及Debug方式
    Window 任意窗口置顶软件Window TopMost Control
    Android ApkToolPlus一个可视化的跨平台 apk 分析工具
    SVN Please execute the 'Cleanup' command.
    Android 如何在64位安卓系统中使用32位SO库
    Android cmd命令查看apk是32位还是64位?
  • 原文地址:https://www.cnblogs.com/xinxihua/p/14461239.html
Copyright © 2020-2023  润新知