У меня около 40 баз данных MS Access и есть некоторые проблемы, если вам нужно создать или передать один из запросов MS Access (например, объект) от одного db к другому dbs. Итак, я попытался решить эту проблему с помощью pyodbc
, но .. как я увидел pyodbc
не поддерживает создание нового, постоянного запроса на доступ к MS Access (object). Я могу подключиться к db, создавать или удалять таблицы/строки, но не могу создать и сохранить новый запрос.Как создать постоянный запрос на доступ к MS Python 3.5.1?
import pyodbc
odbc_driver = r"{Microsoft Access Driver (*.mdb, *.accdb)}"
db_test1 = r'''..\Test #1.accdb'''
db_test2 = r'''..\Test #2.accdb'''
db_test3 = r'''..\Test #3.accdb'''
db_test4 = r'''..\Test #4.accdb'''
db_test_objects = [db_test1, db_test2, db_test3, db_test4]
odbc_conn_str = "Driver=%s;DBQ=%s;" % (odbc_driver, db_file)
print (odbc_conn_str)
conn = pyodbc.connect(odbc_conn_str)
odbc_cursor = conn.cursor()
NewQuery = "CREATE TABLE TestTable(symbol varchar(15), leverage double)"
odbc_cursor.execute(NewQuery)
conn.commit()
conn.close()
С.О., Как создать и сохранить MS Access Query как объекты из питона? Я попытался найти информацию в Google, но ответы были связаны с Запустить код SQL.
На VBA этот код выглядит следующим образом:
Public Sub CreateQueryDefX()
Dim base(1 To 4) As String
base(1) = "..\Test #1.accdb"
base(2) = "..\Test #2.accdb"
base(3) = "..\Test #3.accdb"
base(4) = "..\Test #4.accdb"
For i = LBound(base) To UBound(base)
CurrentBase = base(i)
Set dbo = OpenDatabase(CurrentBase)
With dbo
Set QueryNew = .CreateQueryDef("TestQuery", _
"SELECT * FROM TestTable")
RefreshDatabaseWindow
.Close
End With
Next i
RefreshDatabaseWindow
End Sub
Извините за мой английский, это не мой родной :)
Кстати, я знаю, как решить эту проблему с помощью VBA, но я заинтересованы в решении этой проблемы с помощью python.
спасибо.
Горд, спасибо. Я задал бы еще один вопрос. Как удалить созданный вид? Я буду благодарен за ссылку на заявления о пиодбке, такие как CREATE VIEW и другие. Я не мог найти вашу информацию в документации. – kn9ka
@ kn9ka - Я обновил свой ответ. –