使用Python对Access读写操作

匿名 (未验证) 提交于 2019-12-02 22:51:30

学习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 = 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.建立数据库连接

在学习过程中有什么不懂得可以加 我的python学习交流扣扣qun688244617 群里有不错的学习教程、开发工具与电子书籍。 与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容。  #建立数据库连接 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()   #关闭数据库连接 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!