读取MDF文件int Pandas DataFrame

时间:2018-08-07 20:21:00

标签: python sql pandas mdf

我正在尝试将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 open Microsoft SQL Server MDF file

1 个答案:

答案 0 :(得分:0)

我必须1.)通过SQL Server Studio将.mdf文件附加到我的SQL Server本地实例,然后2.)打开计算机上的端口以允许对SQL Server进行读/写访问。如果我们可以使.mdf在sql服务器上可用,则可以使用pd.read_sql()和sql服务器连接字符串通过pandas / sqlAlchemy连接到它。

  1. 转到.mdf文件的文件夹,然后与计算机上的每个人共享该文件。在Windows 10上,我通过右键单击文件,突出显示Give access to,然后选择Specific people...来执行此操作。然后,我从下拉列表中添加了everyone,为他们提供了读/写权限。这一步很重要,因为否则我无法将文件附加到sql服务器。现在,打开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密码没有受到保护,但是如果您拥有自己的SQL Server密码,则需要按以下方式调整连接字符串:

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

这样,您现在应该将table_name文件中的.mdf读入熊猫数据框中。