python连接access2003

东方心 东方心 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
有一台工作了8年的xp电脑,安装的是弱弱的access2003数据库。想用python对access2003数据库进行操作,由于系统较老,数据库有密码,没有在度娘上找到现成。折腾了一番,终于成功,特此分享。
一、工作环境:windows xp系统,access2003数据库,python2.7(python3不支持),pywin32-221.win32-py2.7
要先安装python2.7再安装pywin32-221.win32-py2.7
二、连接代码:
# -*- coding: cp936 -*-
import win32com.client
conn = win32com.client.Dispatch(r"ADODB.Connection")
DSN = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb ;Persist Security Info=False;Jet OLEDB:Database Password=123456' #test.mdb是access文件,123456是数据库的密码
conn.Open(DSN)
rs = win32com.client.Dispatch(r'ADODB.Recordset')
rs_name = 'Employee'
rs.Open('[' + rs_name + ']', conn, 1, 3)
sql = "Update " + rs_name + " Set Name='咚咚' where ID = 11" #这里是sql语句
conn.Execute(sql) #执行sql语句
conn.Close()


如果查询,执行rs.Open一直出错,后来干脆把方括号去掉,顺利解决问题,,代码如下
import win32com.client

def listBrushCardInfo(condition):
conn = win32com.client.Dispatch(r"ADODB.Connection")
DSN = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb ;Persist Security Info=False;Jet OLEDB:Database Password=123456'
conn.Open(DSN)
rs = win32com.client.Dispatch(r'ADODB.Recordset')
rs.Cursorlocation=3

rs_name = "SELECT Top 20 * FROM BrushCardInfo "+ condition + " order by Date desc,Time desc "
#这里sql语句与与mysql有点区别,例如取前20条,用top 20,不是用limit
rs.Open(rs_name, conn, 1, 3)

rs.MoveFirst()
for x in range(rs.RecordCount):
if rs.EOF:
print "End of records"
break
else:
print rs.Fields("Date").value,rs.Fields("Time").value,rs.Fields("Name").value,rs.Fields("color").value
rs.MoveNext()
conn.Close()
...全文
评论 3
收藏 已收藏
分享
返回顶部
东方心
Access 7,731 成员 28,797 内容