使用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 = 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读写操作的更多相关文章
- python里文件读写操作
文件读写操作一种基本操作,但是里面也存在很多需要注意的问题,例如字符编码.内存缓冲.指针位置等等.如果忽视这些问题就会引起很多不必要的麻烦.简单来说,文件的读写分为几个过程: 打开文件,并定义操作文件 ...
- 【Python】文件读写操作
Python的文件读写有点类似php的文件读写.php的文件读写已经在<[php]让记事本成为你调控变量的控制台>(点击打开链接)说过了,以下用一个小样例说明Python的文件读写. 在F ...
- [ Python ] 文件的读写操作
1. 文件读写操作 读写文件是最常见的 IO 操作, Python 内置了读写文件的函数.在磁盘上读写文件的功能是由操作系统提供的,所以读写文件是请求操作系统打开一个文件对象(通常称为文件描述符),然 ...
- Python中文本文件读写操作的编码问题
Python中文本文件读写的编码问题 编码(encode): 我们输入的任何字符想要以文件(如.txt)的形式保存在计算机的硬盘上, 必须先经按照一定的规则编成计算机认识的二进制后,才能存在电脑硬盘上 ...
- Python文件的读写操作
Python文件的使用 要点:Python能够以文本和二进制两种形式处理文件. 1.文件的打开模式,如表1: 注意:使用open()函数打开文件,文件使用结束后耀使用close()方法关闭,释放文件 ...
- python的文件读写操作
文件读写 本文转自廖雪峰老师的教程https://www.liaoxuefeng.com/wiki/1016959663602400/1017607179232640 读写文件是最常见的IO操作.Py ...
- python进阶--文件读写操作
Python读写文件 1. open 使用open打开文件后一定要记得调用 文件对象的close()方法.比如可以用try --finally语句来确保最后能关闭文件. >>>f1 ...
- 【Python】excel读写操作 xlrd & xlwt
xlrd ■ xlrd xlrd模块用于读取excel文件内容 基本用法: workbook = xlrd.open_workbook('文件路径') workbook.sheet_names() # ...
- python之文件读写操作(r/r+/rb/w/w+/wb/a/a+/ab)的作用
'r':只读.该文件必须已存在. 'r+':可读可写.该文件必须已存在,写为追加在文件内容末尾. 'rb':表示以二进制方式读取文件.该文件必须已存在. 'w':只写.打开即默认创建一个新文件,如果文 ...
随机推荐
- IP查询接口
腾讯的: http://fw.qq.com/ipaddress直接返回本机的IP地址对应的地区新浪的:http://counter.sina.com.cn/ip?ip=IP地址返回Js数据,感觉不是很 ...
- Android 7.0 PopupWindow 的兼容问题
Android7.0 PopupWindow的兼容问题 Android7.0 中对 PopupWindow 这个常用的控件又做了一些改动,修复了以前遗留的一些问题的同时貌似又引入了一些问题,本文 ...
- mac环境下mentohust锐捷登录配置
今天测试react native嵌入原生项目,账号流量恰好用完,想换同学账号却不会更改配置,以至于被网络弄得头疼了一中午.于是,好好研究了一下这个mentohust 一.需要下载的文件 我已经全部整理 ...
- MongoDB【第二篇】集群搭建
第一步:准备 1.安装包 mongodb-linux-x86_64-rhel70-3.4.2.tgz 2. 架构: 本文为 1-primary.1-secondary.1-arbiter 的 mong ...
- 把时间还给洞察,且看PPT调研报告自动生成攻略
文/JSong @2017.02.28 在数据分析里面有一句话是说,80%的时间要用于数据清洗和整理,而我觉得理想的状态应该是把更多的把时间花在数据背后的洞察当中.去年11月在简书占了个坑,说要自己写 ...
- iOS仿微博客户端一条微博的布局
前言 做一个微博客户端的第三方是自学的第一个实践的项目,自从从事iOS工作之后,就把这个项目给搁置了.趁现在过年回来有些空闲时间,再次修改(总觉得项目就是不停地修改).并且记录一点东西,以后可再回头看 ...
- Eclipse通过jdbc连接数据库制作简单登陆界面
一.前言: 做网站开发,要求有多种搭配方式,前台技术可以使用PHP.ASP.JSP.ASP.NET.CGI等任何一种: 需要用到的基础语言用的最多的就是HTML/CSS.JS.JAVA.XML这些了, ...
- 《类型编程晋级——shapeless类库使用指南》前言及第一章翻译
从年初开始进行此项工作,我和合作伙伴包亮付出了大量而艰辛的劳动,现基本翻译完毕,有出版意向,如果有意向欢迎联系,不甚感激!也欢迎各位博友对此翻译提出意见建议以及指导如何出版,在此谢过! 前言 时间回到 ...
- 2017年的golang、python、php、c++、c、java、Nodejs性能对比(golang python php c++ java Nodejs Performance)
2017年的golang.python.php.c++.c.java.Nodejs性能对比 本人在PHP/C++/Go/Py时,突发奇想,想把最近主流的编程语言性能作个简单的比较, 至于怎么比,还是不 ...
- Cocos2d-x中的CC_CALLBACK_X详解
Cocos2d-x 3.x版本用CC_CALLBACK_0,CC_CALLBACK_1,CC_CALLBACK_2和CC_CALLBACK_3的宏来定义回调方法类的. 3.x版本的例子: child- ...