Есть ли библиотека для использования базы данных MS Access в python? Модуль win32 не так прост, как библиотека MySQL. Есть ли более простой способ использования MS Access с Python?
Библиотека MS Access для python
Ответ 1
В зависимости от того, что вы хотите сделать, pyodbc может быть тем, что вы ищете.
import pyodbc
def mdb_connect(db_file, user='admin', password = '', old_driver=False):
driver_ver = '*.mdb'
if not old_driver:
driver_ver += ', *.accdb'
odbc_conn_str = ('DRIVER={Microsoft Access Driver (%s)}'
';DBQ=%s;UID=%s;PWD=%s' %
(driver_ver, db_file, user, password))
return pyodbc.connect(odbc_conn_str)
conn = mdb_connect(r'''C:\x.mdb''') # only absolute paths!
Примечание: вы можете скачать свободно распространяемый новый драйвер, если у вас не установлен MSOffice.
Ответ 2
Я не думаю, что win32 сложно. Попробуйте использовать его модуль odbc. Пример кода, работающего с базами данных ODBC и PostgreSQL:
import odbc
def get_pg_ver(db_alias):
connection = odbc.odbc(db_alias)
try:
cursor = connection.cursor()
cursor.execute('SELECT version()')
for row in cursor.fetchall():
print row[0]
finally:
connection.close()
get_pg_ver('odbc_name/user/passwd')
Это очень похоже на каждый драйвер db, который я использовал в Python и Jython (я работаю с PostgreSQL, Oracle и Informix).
Ответ 3
Вы можете использовать pypyodbc, чтобы легко создать пустой файл MDB Access на платформе win32, а также скомпилировать существующие файлы MDB Access.
Это может быть так просто:
import pypyodbc
pypyodbc.win_create_mdb( "D:\\Your_MDB_file_path.mdb" )
Более того, как библиотека ODBC dbi 2.0, pypyodbc очень совместим с pyodbc, вы можете делать запросы SQL-базы данных, такие как SELECT, INSERT, UPDATE с библиотекой.
Вот полный Tutorial о поддержке доступа pypyodbc.
Отказ от ответственности: я разработчик pypyodbc.
Ответ 4
У меня был недавний успех с использованием модуля pywin32 adodbapi.
Следующий фрагмент был взят из этого веб-сайта:
import adodbapi
database = "db1.mdb"
constr = 'Provider=Microsoft.Jet.OLEDB.4.0; Data Source=%s' % database
tablename = "address"
# connect to the database
conn = adodbapi.connect(constr)
# create a cursor
cur = conn.cursor()
# extract all the data
sql = "select * from %s" % tablename
cur.execute(sql)
# show the result
result = cur.fetchall()
for item in result:
print item
# close the cursor and connection
cur.close()
conn.close()