python读取access_Python获取access表字段名

以下所有代码Python2.7、Python3.4均可用。

一、win32.com

#author: walker

#date: 2015-09-25

#function: 打印指定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为备忘。

相关阅读:

二、pyodbc

#encoding=utf-8

#author: walker

#date: 2015-09-25

#function: 打印指定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

#encoding=utf-8

#author: walker

#date: 2015-09-25

#function: 打印指定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)

row = cur.fetchone()

for tup in row.cursor_description:

print(tup[0])

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 ***

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值