在Jupyter笔记本中,如何使用不同的Windows用户连接到MS SQL



我有一个MS SQL数据库的Select访问权限,我想将数据提取到运行在Jupyter笔记本中的Pandas数据框架中。由于我无法控制的原因,我可以从另一个用户访问数据库。如何从Jupyter查询数据库,同时连接到我当前的用户帐户?

你可以这样做:

  1. Python需要为所有计算机用户安装。
  2. 安装Visual c++构建工具Microsoft c++ Build Tools - Visual Studio
  3. 为计算机中所有用户都可以访问的虚拟环境创建一个目录,例如:mkdir C:virtualenv
  4. 复制命令提示符并粘贴到virtualenv目录。From: C:UsersYOURUSERNAMEAppDataRoamingMicrosoftWindowsStart MenuProgramsSystem ToolsCommand PromptTo: C:virtualenvCommand Prompt
  5. 以不同用户运行命令提示符(按shift +右键)并登录YOURDOMAIN。 username: YOURUSERNAME@YOURDOMAIN or YOURDOMAINYOURUSERNAME password: your password
  6. cd C:virtualenv
  7. 创建虚拟环境:python -m venv .
  8. 连接虚拟环境。scriptsactivate
  9. 安装依赖关系pip install --upgrade jupyter pyodbc sqlalchemy pandas pip
  10. 为用户创建Jupyter配置文件。jupyter notebook --generate-config
  11. 关闭命令提示符右键单击命令提示符快捷方式,然后选择属性。
  12. 清除并留空Start in中的值,并将目标值替换为:Target: %windir%system32runas.exe /user:YOURUSERNAME@YOURDOMAIN “CMD /k "cd C:virtualenv && Scriptsactivate && jupyter notebook”"**可选:您可以添加/saved(在/user之后),它会记住密码。出于安全原因,您不应该这样做。
  13. 双击命令提示符运行Jupyter。

创建一个笔记本连接到SQL数据库,并将表下载到Pandas数据框架中。

import os
import pyodbc
import sqlalchemy as db
import pandas as pd
windomain = os.environ["userdomain"]
if windomain == "YOURDOMAIN":
server = "YOURSERVER"
database = "YOUDATABASE"
driver = "{SQL Server}"
connect = "DRIVER="+driver+";SERVER="+
server+";DATABASE="+database+
";Trusted_Connection=yes"
engine = db.create_engine(
"mssql+pyodbc:///?odbc_connect={}".format(connect))
else:
print("Open as different user.")
df = pd.read_sql(
"""
SELECT TOP(100) *
FROM [YOURDATABASE]
""",
con=engine,
)

最新更新