1

我正在使用 Python 将数据框写入 MS Access 数据库。它可以工作,但我似乎无法关闭连接(即数据库被 Python 锁定)。

这是我的代码:

# imports
import urllib
import pyodbc
import pandas as pd
from sqlalchemy import create_engine

# connection
connection_string = (
    r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
    r'DBQ=M:\Larry\Access\test2.accdb;'
    r'ExtendedAnsiSQL=1;'
)
connection_uri = f"access+pyodbc:///?odbc_connect={urllib.parse.quote_plus(connection_string)}"
engine = create_engine(connection_uri)

# create dataframe
d = {'name':['daryl','other daryl'],'team':['a','b']}
df = pd.DataFrame(d)

# write to database
df.to_sql('test',engine,if_exists='replace',index=False)

我尝试在创建引擎行之后添加它:

conn = engine.connect()

在将数据帧写入数据库之后:

conn.close()

我没有从这些添加中得到错误,但数据库仍然被锁定。如何关闭连接以解除锁定?

4

1 回答 1

1

由于您正在使用引擎对象维护数据库的连接实例,因此在操作之后,请考虑Engine.dispose()释放资源:

...
# write to database 
df.to_sql('test', engine, if_exists='replace', index=False)

engine.dispose()
于 2021-07-20T00:58:41.270 回答