Python3操作Access数据库

记录在windows 10下配置python3链接access数据库过程和几个简单操作。

安装所需库文件

读取Access数据库

建立连接

  • 通过以下交互命令同access数据库建立连接
1
2
3
4
import win32com.client
conn = win32com.client.gencache.EnsureDispatch('ADODB.Connection')
DSN = 'PROVIDER = Microsoft.ACE.OLEDB.12.0;DATA SOURCE = /path/to/database;'
conn.Open(DSN)
  • 访问数据库中名为rs_name的表
1
2
3
rs = win32com.client.Dispatch(r'ADODB.Recordset')
rs_name = 'co'
rs.Open('[' + rs_name + ']', conn, 1, 1) # 不允许更新,用于查询
  • 注意在上面的代码中,rs.Open()的最后两个参数,分别是游标(CursorType)和数据锁定类型(LockType)。
    • 游标为0:为仅向前游标,只读,只能向前浏览记录,不支持分页、Recordset、BookMark
    • 游标为1:为键集游标,只读,其他用户对数据库做的修改将反映到记录集中,但其他用户增加或删除记录不会反映到记录集中。支持分页、Recordset、BookMark
    • 游标为2:为动态游标,可读写,功能最强,但耗资源最多。用户对记录做的修改,增加或删除记录都将反映到记录集中。支持全功能浏览。
    • 游标为3:为静态游标,可读写,只是数据的一个快照,用户对记录做的修改,增加或删除记录都不会反映到记录集中。支持向前或向后移动。
    • 数据锁定类型为1:默认锁定,只读,不能做任何修改
    • 数据锁定类型为2:悲观锁定,当编辑时立刻锁定记录
    • 数据锁定类型为3:乐观锁定,直到使用update方法提交更新记录后才锁定记录
    • 数据锁定类型为4:批量乐观锁定,允许修改多个记录,只有调用UpdateBatch方法后才锁定记录。
      当不需要改动任何记录时,使用只读的记录集,这样提供者不用做任何检测。

命令执行

  • 执行SQL语句,以插入表为例
1
2
sql_statement = "Insert INTO [Table_Name] ([Field_1], [Field_2]) VALUES ('data1', 'data2')"
conn.Execute(sql_statement)
  • 遍历数据库记录,rs.MoveFirst() 访问数据库的第一行记录,rs.MoveNext() 转移到下一行。注意如果第一个记录为空,则 rs.MoveFirst() 会产生一个错误,如果此前将rs的 Cursorlocation 设置为3,则此问题可解决。
1
2
3
4
5
6
rs.MoveFirst()
while True:
if rs.EOF:
break
else:
rs.MoveNext()
  • 查看数据,在下面的例子中,打开的表格中,第一列的名称为ID,第一行数据的ID为001,第二行数据的ID为002。
1
2
3
4
5
6
7
8
>>> rs.MoveFirst()
>>> print(rs.Fields.Item(0).Name)
'ID'
>>> print(rs.Fields.Item(0).Value)
'001'
>>> rs.MoveNext()
>>> print(rs.Fields.Item(0).Value)
'002'
  • 表的列数可通过 rs.Fields.Count 获取。

参考博客:

原创作品,允许转载,转载时无需告知,但请务必以超链接形式标明文章原始出处(https://forec.github.io/2016/07/10/python-visit-access-database/) 、作者信息(Forec)和本声明。

分享到