打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
使用Python对Access读写操作

学习Python的过程中,我们会遇到Access的读写问题

一、可以利用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 = 0while 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#定义conndef 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()   #关闭数据库连接

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
ASP与数据库应用(给初学者
vb 6.0数据库操作代码例子
Recordset对象操作数据库语法_湘
数据库连接问题2 转
Flash处理外部XML文档数据-Flash教程(三)
JDBC
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服