I'm trying to pull a list of tables from an access database. The script goes through and displays about a third of the tables and gets the following error:
Traceback (most recent call last): File "C:/GageInfo/sourcecode for GageTrakNotify/__test script.py", line 31, in for fld in cursor2.columns(rows.table_name): UnicodeDecodeError: 'utf-16-le' codec can't decode bytes in position 132-133: illegal encoding
Any tips would be appreciated.
import pyodbc
cursor1 = conn.cursor()
cursor2 = conn.cursor()
tblCount = 0
for rows in cursor1.tables():
if rows.table_type == "TABLE":
tblCount += 1
print(rows.table_name)
for fld in cursor2.columns(rows.table_name):
print(fld.table_name, fld.column_name)
conn.close()
It sounds like you have a Unicode (non-ASCII) embedded in a table name somewhere. Figuring out what table it's stopping on will confirm whether that's the case or not, but ultimately you want the Python script to just handle Unicode, which can be done with the string
decodemethod:This should be done anywhere there is a possibility of Unicode characters cropping up (for instance, the column names as well).