记录在windows 10下配置python3链接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)
|
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方法后才锁定记录。
当不需要改动任何记录时,使用只读的记录集,这样提供者不用做任何检测。
命令执行
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)和本声明。