以下所有代碼Python2.7、Python3.4均可用。
一、win32.com
<code>#author: walker</code>
<code>#date: 2015-09-25</code>
<code>#summary: 列印指定access檔案、指定表的所有字段</code>
<code>import</code> <code>win32com.client</code>
<code>def</code> <code>PrintColumns_win32com(pathfile, tablename):</code>
<code> </code><code>conn </code><code>=</code> <code>win32com.client.Dispatch(r</code><code>'ADODB.Connection'</code><code>)</code>
<code> </code><code>DSN </code><code>=</code> <code>'PROVIDER=Microsoft.ACE.OLEDB.12.0;DATA SOURCE='</code> <code>+</code> <code>pathfile </code><code>+</code> <code>';'</code>
<code> </code><code>#DSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=' + pathfile + ';'</code>
<code> </code><code>conn.</code><code>Open</code><code>(DSN)</code>
<code> </code>
<code> </code><code>rs </code><code>=</code> <code>win32com.client.Dispatch(r</code><code>'ADODB.Recordset'</code><code>)</code>
<code> </code><code>rs.Cursorlocation </code><code>=</code> <code>3</code>
<code> </code><code>sql </code><code>=</code> <code>'SELECT TOP 1 * FROM '</code> <code>+</code> <code>tablename</code>
<code> </code><code>print</code><code>(sql)</code>
<code> </code><code>rs.</code><code>Open</code><code>(sql, conn)</code>
<code> </code><code>for</code> <code>i </code><code>in</code> <code>range</code><code>(</code><code>0</code><code>, rs.Fields.Count):</code>
<code> </code><code>print</code><code>(rs.Fields[i].Name </code><code>+</code> <code>' - '</code> <code>+</code> <code>str</code><code>(rs.Fields[i].</code><code>Type</code><code>) </code><code>+</code> <code>' - '</code> <code>+</code> <code>str</code><code>(rs.Fields[i].DefinedSize))</code>
<code> </code><code>conn.Close()</code>
關于字段類型(Type):3為數字,202為文本,203為備忘。
相關閱讀:
二、pyodbc
<code>#encoding=utf-8</code>
<code>import</code> <code>pyodbc</code>
<code>def</code> <code>PrintColumns_pyodbc(pathfile, tablename):</code>
<code> </code><code>connStr </code><code>=</code> <code>r</code><code>'Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=%s;'</code> <code>%</code> <code>pathfile</code>
<code> </code><code>print</code><code>(</code><code>'connStr:'</code> <code>+</code> <code>connStr)</code>
<code> </code><code>conn </code><code>=</code> <code>pyodbc.connect(connStr)</code>
<code> </code>
<code> </code><code>cur </code><code>=</code> <code>conn.cursor()</code>
<code> </code><code>for</code> <code>row </code><code>in</code> <code>cur.columns(table</code><code>=</code><code>tablename):</code>
<code> </code><code>print</code><code>(row.column_name)</code>
<code> </code><code>cur.close()</code>
<code> </code><code>conn.close()</code>
相關連結:
三、pypyodbc
<code>import</code> <code>pypyodbc</code>
<code>def</code> <code>PrintColumns_pypyodbc(pathfile, tablename):</code>
<code> </code><code>pypyodbc.lowercase </code><code>=</code> <code>False</code> <code>#是否将字段名轉為小寫</code>
<code> </code><code>conn </code><code>=</code> <code>pypyodbc.connect(connStr)</code>
<code> </code>
<code> </code><code>cur.execute(</code><code>'SELECT TOP 1 * FROM '</code> <code>+</code> <code>tablename)</code>
<code> </code><code>cnt </code><code>=</code> <code>0</code>
<code> </code><code>for</code> <code>tup </code><code>in</code> <code>cur.description:</code>
<code> </code><code>print</code><code>(tup[</code><code>0</code><code>])</code>
<code> </code><code>cnt </code><code>+</code><code>=</code> <code>1</code>
<code> </code><code>print</code><code>(</code><code>'cnt:'</code> <code>+</code> <code>str</code><code>(cnt))</code>
3、未找到官方文檔
四、pyodbc與pypyodbc取值的差別
(1)、在select指定字段時
row[idx]
row.field
row['field']
row.get('field')
pyodbc
√
×
pypyodbc
(2)、在select *時
本文轉自walker snapshot部落格51CTO部落格,原文連結http://blog.51cto.com/walkerqt/1553180如需轉載請自行聯系原作者
RQSLT