2

Microsoft Access (.mdb) データベースに接続してテーブルから値を読み取る Python スクリプト (Windows XP では Python バージョン 2.5.1) に取り組んでいます。対象のフィールドの精度が丸められるという 1 つのレコードで、予期しない結果が得られます。

対象の Access テーブル フィールドが Double データ型であることはわかっています。しかし、テーブルでこれを発見する原因となった値は 1107901035.43948 です。Python コードの値を読み取って出力すると、1107901035.44 と表示されます。

設定する必要があるpyODBC接続パラメータまたはその他はありますか? ドキュメントには何も見つかりませんでした

私のコードは次のようになります (目的は、関心のある分野で最大の価値を持つレコードを特定することで、不要なレコードを解決することです)。

conn = pyodbc.connect('DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=' + pGDB)
conn.autocommit = True
cursor = conn.cursor()

tableList = []
for x in cursor.tables():
    val = str(x[2])
    if val[0:3] <> "MSy":
        if val[0:3] <> "GDB":
            if val[-5:] <> "Index":
                tableList.append(val)

for x in tableList:
    try:
        SQL = "SELECT * FROM %s" % (x)
        cursor.execute(SQL)
        rows = cursor.fetchall()
        counter = 0
        for row in rows:
            counter +=1

        if counter > 1:
            print "Site %s is a multipart basin" % (x)
            SQL = "SELECT MAX(Shape_Area) AS AREA FROM %s" % (x)
            cursor.execute(SQL)
            row = cursor.fetchone()
            val = row.AREA
            print str(val)
            SQL = "DELETE * FROM %s WHERE Shape_Area < %s" % (x, val)
            cursor.execute(SQL)

ありがとう、トム

4

1 に答える 1