首页 > 解决方案 > 读取 MDF 文件 int Pandas DataFrame

问题描述

我正在尝试将 Microsoft SQL Server MDF 文件读入 Python pandas DataFrame。我对这个主题非常迷茫,非常感谢朝着正确方向的任何推动。请让我知道任何可以使回答这个问题更容易的信息。

以下是我找到的一些资源,但无法将其整合到成品中: https ://pandas.pydata.org/pandas-docs/stable/io.html#engine-connection-examples http:// /pandas.pydata.org/pandas-docs/stable/generated/pandas.read_sql.html Python 打开 Microsoft SQL Server MDF 文件

标签: pythonsqlpandasmdf

解决方案


我必须 1.).mdf通过 sql server studio 将文件附加到我的本地 sql server 实例,然后 2.) 在我的计算机上打开一个端口以允许对 sql server 进行读/写访问。如果我们可以使 .mdf 在 sql server 上可用,那么我们可以通过 pandas/sqlAlchemypd.read_sql()和 sql server 连接字符串连接到它。

  1. 转到文件的.mdf文件夹,并与机器上的每个人共享文件。在 Windows 10 上,我通过右键单击文件、突出显示Give access to并选择Specific people.... 然后我everyone从下拉列表中添加,给他们读/写权限。这一步很重要,否则我无法将文件附加到 sql server。现在,打开 sql server management studio,连接到您的 sql server 实例,然后右键单击Databases。您可以Attach...在其中按照菜单选择.mdf文件的选项。您的 .mdf 现在已附加到 sql server。

  2. 既然您.mdf在 sql server 中,我们仍然存在无法访问它的问题。这可以通过在您的机器上打开一个端口以允许访问 sql server 来解决。我按照本指南能够做到这一点:https ://docs.microsoft.com/en-us/sql/relational-databases/lesson-2-connecting-from-another-computer?view=sql-server-2017 . 完成此操作方法后,您的 sql 服务器应该可以访问。现在可能有更简单的方法可以在本地机器上访问 sql server,但是这种方法的好处是,如果您也想从远程机器上读取 sql server,它也应该可以工作。您所要做的就是更改我们连接字符串中的 IP 地址(如下)。

现在我们有了一个可访问的 sql server 实例和我们的.mdf文件作为其中的数据库,我们可以像从 pandas 读取任何其他数据库一样读取该文件。我现在使用以下设置来读取我的.mdf文件。

# MS SQL Server Config
server = '127.0.0.1'  # mssql is set up on localhost
port = '1433'  # the port I opened to access mssql
database = 'database_name'
username = 'username'
password = 'password'
driver = 'SQL+SERVER'
schema = 'dbo'

# create a sqlAlchemy engine with the above credentials
connection_str = f'mssql+pyodbc://{server}:{port}/{database}?driver={driver}'
engine = create_engine(connection_str)

# read our mdf file!
query = 'select * from table_name;'
df = pd.read_sql(query, engine)

现在我没有保护我的 sql server 密码,因为我只是在本地运行,但如果你有你的,你需要调整你的连接字符串,如下所示:

connection_str = f'mssql+pyodbc://{username}:{password}@{server}:{port}/{database}?driver={driver}'

有了这个,你现在应该table_name从你的.mdf文件中读入一个 pandas 数据框。


推荐阅读