【问题标题】:Invalid value specified for connection string attribute为连接字符串属性指定的值无效
【发布时间】:2020-02-10 03:57:43
【问题描述】:
import pyodbc as po    

connection_string = """
driver=ODBC Driver 17 for SQL Server;
server=SHADOW-LN4F5NUO;
database=FBI_Crime_Data;
trusted_connection=True;
"""

connection = po.connect(connection_string)

输出:

Traceback (most recent call last):
  File "C:\Program Files\JetBrains\PyCharm 2019.3.1\plugins\python\helpers\pydev\pydevd.py", line 1434, in _exec
    pydev_imports.execfile(file, globals, locals)  # execute the script
  File "C:\Program Files\JetBrains\PyCharm 2019.3.1\plugins\python\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "C:\Users\Jack\Desktop\GitHub\FBI_Crime_Data_Analysis\main.py", line 133, in <module>
    import_file(file_location="data/ASR122016.TXT")
  File "C:\Users\Jack\Desktop\GitHub\FBI_Crime_Data_Analysis\main.py", line 122, in import_file
    export_dataframe_to_SQL_Server(df=df, table_name=table_name)
  File "C:\Users\Jack\Desktop\GitHub\FBI_Crime_Data_Analysis\main.py", line 40, in export_dataframe_to_SQL_Server
    connection = po.connect(connection_string)
pyodbc.OperationalError: ('08001', "[08001] [Microsoft][ODBC Driver 17 for SQL Server]Invalid value specified for connection string attribute 'trusted_connection' (0) (SQLDriverConnect)")
  • 服务器名称正确。
  • 数据库名称正确
  • 存在 ODBC 驱动程序。
  • SSMS 中的 Windows 身份验证有效。

【问题讨论】:

    标签: python sql-server pycharm pyodbc


    【解决方案1】:

    根据this microsoft documentation,识别值为truefalseyesnosspi

    pyodbc documentation 说,您可以使用 Windows 帐户进行身份验证,而不是用户名/密码,方法是提供 Trusted_Connection 属性:Trusted_Connection=yes

    所以看起来connectionstrings sql server main page 显示了.Net 库的连接字符串。如果您单击“ODBC 驱动程序”下特定驱动程序版本的任何页面(如171311),则会显示Trusted_Connection=yes

    【讨论】:

    • 我认为大写并不重要,但yes 有效。 truesspi 不起作用。知道为什么会这样吗?是否取决于 SQL Server 版本?
    • 感谢您的提示,我现在知道问题所在了。这并不是一个错字,只是糟糕的、令人困惑的网页设计。看到这个截图:i.imgur.com/VX43VWX.png
    • 更糟糕的是,URL 只是显示connectionstrings.com/sql-server。甚至没有告诉您您正在查看 .Net 的连接字符串
    • 好收获!我更新了我的答案以包含您的发现。
    【解决方案2】:
    For [ODBC Driver 17 for SQL Server] driver
    It should be like 
    connection_string = "
    driver=ODBC Driver 17 for SQL Server;
    server=SHADOW-LN4F5NUO;
    database=FBI_Crime_Data;
    trusted_connection=yes;
    """
    
    For [SQL SERVER DRIVER]
    It should be like :
    
    connection_string = "
    driver=SQL SERVER DRIVER;
    server=SHADOW-LN4F5NUO;
    database=FBI_Crime_Data;
    trusted_connection=True;
    "
    

    【讨论】:

      猜你喜欢
      • 2016-09-12
      • 2021-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-10
      • 2021-03-28
      • 2018-06-11
      相关资源
      最近更新 更多