1

私はいくつかのmsaccessデータベースを持っており、それぞれに。という名前のテーブルがありますPlotStatus-name-3/13/12

これらの各テーブルをテーブルにインポートする必要があり.csvます。テーブルの名前を手動でに変更するとPlotStatus_name_3_13_12、このコードは機能します。Pythonを使用してテーブル名を変更する方法を知っている人はいますか?

#connect to access database
for filename in os.listdir(prog_rep_local):
if filename[-6:] == ".accdb":
    DBtable = os.path.join(prog_rep_local, filename)
    conn = pyodbc.connect(r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=' + DBtable)
    cursor = conn.cursor()
    ct = cursor.tables
    for row in ct():
        rtn = row.table_name
        if rtn[:10] == "PlotStatus":

            #this does not work:
            #Oldpath = os.path.join(prog_rep_local, filename, rtn)
            #print Oldpath
            #fpr = Oldpath.replace('-', '_')#.replace("/","_")
            #print fpr
            #newname = os.rename(Oldpath, fpr)  this does not work
            #print newname
            #spqaccdb = "SELECT * FROM " + newname


            #this workds if I manually change the table names in advance
            sqlaccdb = "SELECT * FROM " + rtn
            print sqlaccdb

            cursor.execute(sqlaccdb)
            rows = cursor.fetchall()
4

1 に答える 1

1

より簡単な解決策は、テーブル名の前後に角かっこを追加して、/sがSQLコマンドインタープリターをスローしないようにすることです。

sqlaccdb = "SELECT * FROM [" + rtn + "]"
于 2013-03-08T23:04:24.377 に答える