2017-02-01 2 views
2

pythonanywhere에서 Azure가 호스트하는 MSSQL 서버에 pymssql을 통해 연결할 수 없었습니다. 필자는 이전의 리눅스 경험이 전혀 없었으므로, 그렇게하기가 힘들었습니다.pythonanywhere의 linux cloud에서 Azure mssql에 대한 문제 해결

나는 지침을 제공하는이 샘플 스크립트를 시도하고있다 :

host = "123.456.789.012" 
username = "yourusername" 
password = "yourpassword" 
database = "yourdatabasename" 

conn = pymssql.connect(host, username, password, database) 
cursor = conn.cursor() 

을하지만이 오류 얻을 : 나는 그것이 버전은 내가 실행하고있는 TDS와 함께해야 할 일을했을 생각

Traceback (most recent call last): 
    File "pymssql.pyx", line 635, in pymssql.connect (pymssql.c:10734) 
    File "_mssql.pyx", line 1902, in _mssql.connect (_mssql.c:21821) 
    File "_mssql.pyx", line 637, in _mssql.MSSQLConnection.__init__ (_mssql.c:6581) 
    File "_mssql.pyx", line 1630, in _mssql.maybe_raise_MSSQLDatabaseException (_mssql.c:17524) 
_mssql.MSSQLDatabaseException: (20002, b'DB-Lib error message 20002, severity 9:\nAdaptive Server connection failed (my_server_name.database.windows.net:1433)\n') 
During handling of the above exception, another exception occurred: 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "pymssql.pyx", line 641, in pymssql.connect (pymssql.c:10824) 
pymssql.OperationalError: (20002, b'DB-Lib error message 20002, severity 9:\nAdaptive Server connection failed (my_server_name.database.windows.net:1433)\n') 

을하는 bash에서 tsql -C을 실행하여 4.2이됩니다. 여기에 출력됩니다 :

Compile-time settings (established with the "configure" script) 
         Version: freetds v0.91 
     freetds.conf directory: /etc/freetds 
MS db-lib source compatibility: no 
    Sybase binary compatibility: yes 
        Thread safety: yes 
        iconv library: yes 
        TDS version: 4.2 
          iODBC: no 
         unixodbc: yes 
      SSPI "trusted" logins: no 
         Kerberos: yes 

내가 home/myuser/에서와 home/myuser/my_virtual_env/에서 모두 .freetds.conf 파일을 배치 시도는하지만 어떤 동작을 변경하지 않았다. bash 콘솔이나 파이썬 콘솔을 다시 시작해야합니까? 나는 그렇게 생각하지 않아.

[global] 
     tds version = 7.1 


[azure] 
     tds version = 7.4 

다른 대안은 pyodbc을 사용하는 것입니다, 그러나 그것은 또한 다음 좀 더 구성 FreeTDS를하고 참여 것이다, 그래서이 가지게되는 것이없는 것 같습니다 다음은 파일의 내용이다. 모든 웹 ADRESS에 대한 액세스를 허용하지 않는 PythonAnywhre에서

arguments = dict(server=db_server_add, user=db_usn+"@my_server", 
           password=db_pswd, database=db_name, charset="utf8") 
AZURE_ENGINE = create_engine('mssql+pymssql:///', connect_args=arguments) 
+0

빠른 것은 체크 - 당신 무료 사용자 인 두 배로? PythonAnywhere는 무료 사용자가 임의의 외부 인터넷 연결을 허용하지 않습니다. 무료 사용자를위한 화이트리스트가 있습니다. – conrad

+0

@conrad, 아니요. 서비스에 대한 느낌을 얻기 위해 가장 낮은 계층에 서명했습니다. 사이트에서 제공되는 모든 지시 사항을 시도했습니다. – mvbentes

+0

업그레이드 후 콘솔을 다시 시작 했습니까? – hwjp

답변

-1

무료 accaunt에 :


나는 pymssql 다음과 같은 연결 문자열 내 win10 컴퓨터에 푸른에 잘 연결이 있음을 지적한다 . 목록에서 유일한 adree. 영어로 죄송합니다. "유료 PythonAnywhere 계획이있는 경우"

https://help.pythonanywhere.com/pages/MSSQLServer/

+1

OP에는 의견에서 언급 한 유료 계정이 있습니다. – FabienP