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

在学习过程中有什么不懂得可以加
我的python学习交流扣扣qun,688244617
群里有不错的学习教程、开发工具与电子书籍。
与你分享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()   #关闭数据库连接
  • 12
    点赞
  • 96
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Python可以通过多种方式连接和读写Access数据库,以下是一些常用的方法: 1. pypyodbc包 pypyodbc是一个Python库,可以连接到多种数据库系统,包括Access使用pypyodbc包可以方便地连接Access数据库,读取数据到Python中进行分析和处理。 安装pypyodbc包: ```Python !pip install pypyodbc ``` 连接Access数据库: ```Python import pypyodbc db_path = 'C:/path/to/access/database.accdb' conn_str = 'Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=%s;' % db_path conn = pypyodbc.connect(conn_str) ``` 执行SQL语句: ```Python query = "SELECT * FROM table_name" cursor = conn.cursor() cursor.execute(query) result = cursor.fetchall() ``` 关闭连接: ```Python conn.close() ``` 2. pyodbc包 pyodbc是另一个Python库,同样可以连接到多种数据库系统,包括Access使用pyodbc包可以方便地连接Access数据库,读取数据到Python中进行分析和处理。 安装pyodbc包: ```Python !pip install pyodbc ``` 连接Access数据库: ```Python import pyodbc db_path = 'C:/path/to/access/database.accdb' conn_str = 'Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=%s;' % db_path conn = pyodbc.connect(conn_str) ``` 执行SQL语句: ```Python query = "SELECT * FROM table_name" cursor = conn.cursor() cursor.execute(query) result = cursor.fetchall() ``` 关闭连接: ```Python conn.close() ``` 总的来说,pypyodbc和pyodbc都是连接Access数据库的不错选择,具体使用哪种方法可以根据自己的需求和操作习惯来决定。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值