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

#建立数据库连接
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() #关闭数据库连接

使用Python对Access读写操作的更多相关文章

  1. python里文件读写操作

    文件读写操作一种基本操作,但是里面也存在很多需要注意的问题,例如字符编码.内存缓冲.指针位置等等.如果忽视这些问题就会引起很多不必要的麻烦.简单来说,文件的读写分为几个过程: 打开文件,并定义操作文件 ...

  2. 【Python】文件读写操作

    Python的文件读写有点类似php的文件读写.php的文件读写已经在<[php]让记事本成为你调控变量的控制台>(点击打开链接)说过了,以下用一个小样例说明Python的文件读写. 在F ...

  3. [ Python ] 文件的读写操作

    1. 文件读写操作 读写文件是最常见的 IO 操作, Python 内置了读写文件的函数.在磁盘上读写文件的功能是由操作系统提供的,所以读写文件是请求操作系统打开一个文件对象(通常称为文件描述符),然 ...

  4. Python中文本文件读写操作的编码问题

    Python中文本文件读写的编码问题 编码(encode): 我们输入的任何字符想要以文件(如.txt)的形式保存在计算机的硬盘上, 必须先经按照一定的规则编成计算机认识的二进制后,才能存在电脑硬盘上 ...

  5. Python文件的读写操作

    Python文件的使用 要点:Python能够以文本和二进制两种形式处理文件. 1.文件的打开模式,如表1:  注意:使用open()函数打开文件,文件使用结束后耀使用close()方法关闭,释放文件 ...

  6. python的文件读写操作

    文件读写 本文转自廖雪峰老师的教程https://www.liaoxuefeng.com/wiki/1016959663602400/1017607179232640 读写文件是最常见的IO操作.Py ...

  7. python进阶--文件读写操作

    Python读写文件 1. open 使用open打开文件后一定要记得调用 文件对象的close()方法.比如可以用try --finally语句来确保最后能关闭文件. >>>f1 ...

  8. 【Python】excel读写操作 xlrd & xlwt

    xlrd ■ xlrd xlrd模块用于读取excel文件内容 基本用法: workbook = xlrd.open_workbook('文件路径') workbook.sheet_names() # ...

  9. python之文件读写操作(r/r+/rb/w/w+/wb/a/a+/ab)的作用

    'r':只读.该文件必须已存在. 'r+':可读可写.该文件必须已存在,写为追加在文件内容末尾. 'rb':表示以二进制方式读取文件.该文件必须已存在. 'w':只写.打开即默认创建一个新文件,如果文 ...

随机推荐

  1. Maven入门,Maven项目的创建,nexus 2.x搭建私服以及Maven多模块项目创建

    maven的了解做一个总结,以便日后查阅, 若有不足之处,还望指出,学无止境 当然也能起到入门效果. 一,搭建maven私服 1.工具 a. Nexus 2.5.1-01 b. Maven 3.3.9 ...

  2. BZOJ 1004: [HNOI2008]Cards(群论)

    好吧我就是蒟蒻根本没听说过群论(虽说听叉姐说几万年都不会考) 我也讲不太来,直接戳VFK大神的blog啦 = = http://vfleaking.blog.163.com/blog/static/1 ...

  3. redux 初识

    前言 Redux 试图让 state 的变化变得可预测 react/react-native 将组件的更新交给了状态机(state),想要更新页面活着页面的某个组件就必须得通过改变state的方式.页 ...

  4. Weinre 远程调试移动端页面

    Weinre 是一款远程调试工具,使用JS编写, 可以让我们在电脑上直接调试运行在手机上的远程页面,当你的代码已经发布上线,这时候出现了问题,Weinre就可以帮你调试. 调试场景 调试页面在手机上. ...

  5. angular : direative : autoResize textarea auto resize

    今天为大家推出自己的auto resize 指令功能. 目的:解决textarea在给height的问题. 参考源码:http://monospaced.github.io/angular-elast ...

  6. (三目运算符)PHP中问号?和冒号: 的作用

    <表达式1>?<表达式2>:<表达式3>; "?"运算符的含义是: 先求表达式1的值, 如果为真, 则执行表达式2,并返回表达式2的结果 ; 如 ...

  7. Couchbase 中的分布式储存

    Couchbase 是一个具有高性能.可扩展性和可 用性强的数据库引擎.它可以让开发人员通过 NoSQL 的键值存储(二进制或者JSON)或者使用 N1QL 的形式对数据进行操作(N1QL 是非常类似 ...

  8. github学习(二)

    Git学习(一) 学习github一定要学会git,否则在后续的github运用中会出现很多问题. 1.安装Git: Mac自带Git,Windows需要自己安装. 2.配置git: 配置user.n ...

  9. 交互神器 Facebook Origami

    最近用到了一个非常强大的工具,这是一款由 facebook 出品的原型设计软件,老规矩我们先来看一下效果.大家也可以先进去官网看看效果Origami 官网 scroll.gif swipe.gif O ...

  10. Eclipse:The selection cannot be launched,and there are no recent launches

    刚刚装上eclipse,于是就想写个Java程序来试试.结果写好之后不管是点击 run  还是  debug 结果都会弹出一个窗口,内容为: The selection cannot be launc ...