sql >> Databasteknik >  >> RDS >> Sqlserver

pyodbc kan inte ansluta till databasen

Som det visar sig var databasen i fråga redan kopplad till standardinstansen av SQL Server på den lokala datorn, så allt som behövdes för att ansluta var

import pyodbc
conn_str = (
    r"Driver={SQL Server Native Client 11.0};"
    r"Server=(local);"
    r"Database=online_banking;"
    r"Trusted_Connection=yes;"
    )
conn = pyodbc.connect(conn_str)

Det fanns två huvudsakliga förvirringspunkter:

F:Vad är namnet på en SQL Server "standardinstans"?

S:Den har ingen.

När man refererar till en SQL Server-instans med namn, en standardinstans går helt enkelt under namnet på maskinen, medan en namngiven instans identifieras av MachineName\InstanceName . Så, på en server som heter PANORAMA

  • Om vi ​​installerar en "standardinstans" av SQL Server hänvisar vi till den som PANORAMA .
  • Om vi ​​installerar en "namngiven instans" kallad "SQLEXPRESS" hänvisar vi till den som PANORAMA\SQLEXPRESS .

Om vi ​​hänvisar till en SQL-serverinstans på den lokala maskinen kan vi använda (local) istället för PANORAMA .

F:Betyder (lokal) och (localdb) samma sak?

S:NEJ.

(local) och (local)\InstanceName hänvisa till "riktiga" serverbaserade instanser av SQL Server. Det här är de instanser som har funnits sedan SQL Server släpptes först. De körs som en tjänst och kan acceptera nätverksanslutningar och göra allt vi förväntar oss att en databasserver ska göra.

(localdb) och (localdb)\InstanceName referenser – med (localdb) vanligtvis versaler som (LocalDB) för tydlighetens skull – används för att ansluta till "SQL Server LocalDB"-instanser. Dessa är tillfälliga lokala SQL Server-instanser främst avsedda för utvecklare. Mer information finns i följande MSDN-blogginlägg:

SQL Express v LocalDB v SQL Compact Edition



  1. Castar NULL-typ vid uppdatering av flera rader

  2. Oracle DB Server + APEX + ORDS + JasperReports from scratch (Del 4)

  3. Bindande variabel till tabellnamn med cx_Oracle

  4. Postgres:välj summan av värden och summera sedan detta igen