既没有提供 DSN 也没有提供 SERVER 关键字
Neither DSN nor SERVER keyword supplied
我正在尝试以略微不同的方式连接到 SQL 数据库:使用和不使用参数。为什么不使用参数工作正常,但使用参数 - 给我一个错误。
我犯了语法错误吗?
我仔细检查了每个字母,但什么也看不到。
import pandas as pd
import pyodbc
#parameters:
server = 'SQLDEV'
db = 'MEJAMES'
#Create the connection
conn = pyodbc.connect('DRIVER={SQL Server};server =' + server + ';DATABASE = ' + db + ';Trusted_Connection=yes;')
# query db
sql = """
select top 10 PolicyNumber, QuoteID, ProducerName from tblQuotes
"""
df = pd.read_sql(sql,conn)
df
上面的语句给我一个错误
但是如果我这样做但不使用参数那么它工作正常:
import pandas as pd
import pyodbc
#parameters:
#server = 'SQLDEV'
#db = 'MEJAMES'
#Create the connection
conn = pyodbc.connect("DRIVER={SQL Server};server=SQLDEV;database=MEJAMES;Trusted_Connection=yes;")
# query db
sql = """
select top 10 PolicyNumber, QuoteID, ProducerName from tblQuotes
"""
df = pd.read_sql(sql,conn)
df
Windows ODBC 驱动程序管理器对连接字符串中的关键字非常挑剔。它们后面必须紧跟等号,因此 SERVER=...
有效,但 SERVER =...
无效。
这很疯狂,但我通过实际传递一个选项设法解决了它:extra_params: server=WHEREYOURSERVERLIVES\DBSERVER
顺便说一句,我在 django 上使用 pyodbc。
一定是出了什么问题。
像这样
'ENGINE': 'sql_server.pyodbc',
'NAME': 'YOURGREATESTDATABASE',
'USER': 'YOURGREATESTUSERNAME',
'PASSWORD': 'YOURGREATESTPASSWORD',
'HOST': 'WHEREYOURSERVERLIVES\DBSERVER',
'PORT': '',
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server',
'extra_params': "Persist Security Info=False;server=WHEREYOURSERVERLIVES\DBSERVER"
试试这个格式:
这应该有效
connection = pyodbc.connect("DRIVER={/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.4.so.2.1};SERVER=%s;DATABASE=%s;UID=%s;PWD=%s"
% (server, database, username, password))
我正在尝试以略微不同的方式连接到 SQL 数据库:使用和不使用参数。为什么不使用参数工作正常,但使用参数 - 给我一个错误。 我犯了语法错误吗? 我仔细检查了每个字母,但什么也看不到。
import pandas as pd
import pyodbc
#parameters:
server = 'SQLDEV'
db = 'MEJAMES'
#Create the connection
conn = pyodbc.connect('DRIVER={SQL Server};server =' + server + ';DATABASE = ' + db + ';Trusted_Connection=yes;')
# query db
sql = """
select top 10 PolicyNumber, QuoteID, ProducerName from tblQuotes
"""
df = pd.read_sql(sql,conn)
df
上面的语句给我一个错误
但是如果我这样做但不使用参数那么它工作正常:
import pandas as pd
import pyodbc
#parameters:
#server = 'SQLDEV'
#db = 'MEJAMES'
#Create the connection
conn = pyodbc.connect("DRIVER={SQL Server};server=SQLDEV;database=MEJAMES;Trusted_Connection=yes;")
# query db
sql = """
select top 10 PolicyNumber, QuoteID, ProducerName from tblQuotes
"""
df = pd.read_sql(sql,conn)
df
Windows ODBC 驱动程序管理器对连接字符串中的关键字非常挑剔。它们后面必须紧跟等号,因此 SERVER=...
有效,但 SERVER =...
无效。
这很疯狂,但我通过实际传递一个选项设法解决了它:extra_params: server=WHEREYOURSERVERLIVES\DBSERVER
顺便说一句,我在 django 上使用 pyodbc。
一定是出了什么问题。
像这样
'ENGINE': 'sql_server.pyodbc',
'NAME': 'YOURGREATESTDATABASE',
'USER': 'YOURGREATESTUSERNAME',
'PASSWORD': 'YOURGREATESTPASSWORD',
'HOST': 'WHEREYOURSERVERLIVES\DBSERVER',
'PORT': '',
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server',
'extra_params': "Persist Security Info=False;server=WHEREYOURSERVERLIVES\DBSERVER"
试试这个格式:
这应该有效
connection = pyodbc.connect("DRIVER={/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.4.so.2.1};SERVER=%s;DATABASE=%s;UID=%s;PWD=%s"
% (server, database, username, password))