以下所有代码Python2.7、Python3.4均可用。
一、win32.com
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#author: walker
#date: 2015-09-25
#summary: 打印指定access文件、指定表的所有字段
import
win32com.client
def
PrintColumns_win32com(pathfile, tablename):
conn
=
win32com.client.Dispatch(r
'ADODB.Connection'
)
DSN
=
'PROVIDER=Microsoft.ACE.OLEDB.12.0;DATA SOURCE='
+
pathfile
+
';'
#DSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=' + pathfile + ';'
conn.
Open
(DSN)
rs
=
win32com.client.Dispatch(r
'ADODB.Recordset'
)
rs.Cursorlocation
=
3
sql
=
'SELECT TOP 1 * FROM '
+
tablename
print
(sql)
rs.
Open
(sql, conn)
for
i
in
range
(
0
, rs.Fields.Count):
print
(rs.Fields[i].Name
+
' - '
+
str
(rs.Fields[i].
Type
)
+
' - '
+
str
(rs.Fields[i].DefinedSize))
conn.Close()
|
关于字段类型(Type):3为数字,202为文本,203为备忘。
相关阅读:
0、win32com下载。
二、pyodbc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#encoding=utf-8
#author: walker
#date: 2015-09-25
#summary: 打印指定access文件、指定表的所有字段
import
pyodbc
def
PrintColumns_pyodbc(pathfile, tablename):
connStr
=
r
'Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=%s;'
%
pathfile
print
(
'connStr:'
+
connStr)
conn
=
pyodbc.connect(connStr)
cur
=
conn.cursor()
for
row
in
cur.columns(table
=
tablename):
print
(row.column_name)
cur.close()
conn.close()
|
相关链接:
三、pypyodbc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
#encoding=utf-8
#author: walker
#date: 2015-09-25
#summary: 打印指定access文件、指定表的所有字段
import
pypyodbc
def
PrintColumns_pypyodbc(pathfile, tablename):
connStr
=
r
'Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=%s;'
%
pathfile
print
(
'connStr:'
+
connStr)
pypyodbc.lowercase
=
False
#是否将字段名转为小写
conn
=
pypyodbc.connect(connStr)
cur
=
conn.cursor()
cur.execute(
'SELECT TOP 1 * FROM '
+
tablename)
cnt
=
0
for
tup
in
cur.description:
print
(tup[
0
])
cnt
+
=
1
print
(
'cnt:'
+
str
(cnt))
cur.close()
conn.close()
|
相关链接:
3、未找到官方文档
四、pyodbc与pypyodbc取值的区别
(1)、在select指定字段时
row[idx] | row.field | row['field'] | row.get('field') | |
pyodbc | √ | √ | × | × |
pypyodbc | √ | × | √ | √ |
(2)、在select *时
row[idx] | row.field | row['field'] | row.get('field') | |
pyodbc | √ | × | × | × |
pypyodbc | √ | × | √ | √ |
相关阅读:
*** walker * Updated 2015-09-25 ***
本文转自walker snapshot博客51CTO博客,原文链接http://blog.51cto.com/walkerqt/1553180如需转载请自行联系原作者
RQSLT