odbc
및 sqlalchemy
으로 MS SQL Server 데이터베이스에 연결하려고 시도하면 pandas.DataFrame
을 데이터베이스에 쓰고 오류가 발생하는 것으로 나타납니다. 사용중인 사용자는 빈 문자열입니다 (연결 문자열이 제공된 경우). 왜 이럴 수 있니?MS SQL Server에 연결하려고 시도했습니다. 사용자가 공백 문자열을 던지고 있습니다.
관련 코드는 다음과 같습니다
import sqlalchemy
# setup db connection
server = 'myserver'
database = 'mydb'
table = 'mytable'
username = 'username'
password = 'password'
cnxn_str = 'DSN=MyMSSQLServer;DATABASE='+database+';UID='+username+';PWD='+password+';MultipleActiveResultSets=True;'
engine = sqlalchemy.create_engine("mssql+pyodbc:///?odbc_connect=%s" % cnxn_str)
# testing connection
cnxn = engine.connect()
...
및 슬로우 (요약 된) 오류 메시지는 다음과 같습니다 또한 나에게 이상한 무엇
---------------------------------------------------------------------------
InterfaceError Traceback (most recent call last)
<ipython-input-207-6807f223c9bb> in <module>()
15
16 #Sample select query
---> 17 cnxn = engine.connect()
18 result = connection.execute("SELECT @@version;")
19 for row in result:
/home/mapr/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/base.py in connect(self, **kwargs)
2016 """
2017
-> 2018 return self._connection_cls(self, **kwargs)
2019
2020 def contextual_connect(self, close_with_result=False, **kwargs):
...
...
/home/mapr/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/strategies.py in connect(connection_record)
95 if connection is not None:
96 return connection
---> 97 return dialect.connect(*cargs, **cparams)
98
99 creator = pop_kwarg('creator', connect)
/home/mapr/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/default.py in connect(self, *cargs, **cparams)
383
384 def connect(self, *cargs, **cparams):
--> 385 return self.dbapi.connect(*cargs, **cparams)
386
387 def create_connect_args(self, url):
InterfaceError: (pyodbc.InterfaceError) ('28000', u"[28000] [unixODBC][Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Login failed for user ''. (18456) (SQLDriverConnect)")
이 동일한 연결 문자열이 성공적으로 이전에 작동한다는 것입니다 동일한 SQL 서버에서 읽을 때 코드를 사용하지만이 경우 cnxn = pyodbc.connect(cnxn_str)
을 사용하여 연결을 설정합니다 (여기서는 같은 작업을 수행하지만 docs에 따르면 sqlalchemy를 사용해야 sqlite 이외의 다른 것에 쓰고 싶습니다. 삼).
아무도 왜 이런 일이 일어나고 어떻게 해결할 수 있는지 설명 할 수 있습니까? 감사.
감사합니다, 그했다. 그러나 내가 이미하고 있었던 것에 무엇이 잘못 되었습니까? 'sql alchemy'가 기본'pyodbc'를 사용했다면'pyodbc.connect()'에 대한 직접 호출과 같은 연결 문자열을 사용할 때 왜 문제가 있었습니까? – lampShadesDrifter