学习Python的过程中,我们会遇到Access的读写问题
import win32com.client
conn = win32com.client.Dispatch(r"ADODB.Connection")DSN = 'PROVIDER = Microsoft.Jet.OLEDB.4.0;DATA SOURCE = test.mdb'conn.Open(DSN)
rs = win32com.client.Dispatch(r'ADODB.Recordset')rs_name = 'MEETING_PAPER_INFO'rs.Open('[' + rs_name + ']', conn, 1, 3)
rs.AddNew() #添加一条新记录rs.Fields.Item(0).Value = "data" #新记录的第一个字段设为"data"rs.Update() #更新
# 增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)
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()
conn.Close()
import pypyodbc
#建立数据库连接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
cur = conn.cursor()
#增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 []
cur.close()
conn.close()
# -*- 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() #关闭数据库连接
联系客服