2013-04-15 44 views
8

Tôi cần gửi unicode tới SQL Server bằng Python 2.7. I failed with pymssql. Tôi hiện đang cố gắng để có được pypyodbc hoạt động (trái ngược với pyodbc), vì nó cung cấp cho working unicode examples. Vấn đề là chuỗi kết nối trong ví dụ không giống bất cứ thứ gì tôi nhận ra. Tôi nhìn this, và, sau khi một thử nghiệm nhỏ và sai, xây dựng chuỗi này:Kết nối với SQL Server với pypyodbc

conn = pypyodbc.connect("DRIVER={SQL Server};SERVER='MyServer';UID='me';PWD='MyPassword';DATABASE='db'") 

Got lại một DatabaseError tập trung vào các chuỗi kết nối:

C:\Anaconda\lib\site-packages\pypyodbc.pyc in __init__(self, connectString, autocommit, ansi, timeout, unicode_results, readonly, **kargs) 
---> 2 conn = pypyodbc.connect("DRIVER={SQL Server};SERVER='MyServer';UID='me';PWD='password';DATABASE='db'") 

C:\Anaconda\lib\site-packages\pypyodbc.pyc in __init__(self, connectString, autocommit, ansi, timeout, unicode_results, readonly, **kargs) 
---> 2273   self.connect(connectString, autocommit, ansi, timeout, unicode_results, readonly) 

C:\Anaconda\lib\site-packages\pypyodbc.pyc in connect(self, connectString, autocommit, ansi, timeout, unicode_results, readonly) 
---> 2321   check_success(self, ret) 

C:\Anaconda\lib\site-packages\pypyodbc.pyc in ctrl_err(ht, h, val_ret, ansi) 
---> 919     raise DatabaseError(state,err_text) 

DatabaseError: (u'08001', u'[08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied.') 

Tôi biết thông tin của tôi là chính xác bởi vì tôi đã sử dụng chúng để kết nối thành công bằng cách sử dụng pymssql. Tôi đang thiếu gì?

Trả lời

15

Tháo dấu nháy đơn từ server, uid, pwd, và database thuộc tính của chuỗi kết nối:

conn = pypyodbc.connect("DRIVER={SQL Server};SERVER=MyServer;UID=me;PWD=password;DATABASE=db") 

Kể từ pypyodbc đề cập đến khả năng tương thích với pyodbc, phải mất một phút để xem qua các pyodbc connection string docspyodbc.connect() ví dụ. Tôi sử dụng cú pháp này trong pyodbc:

cnxn = connect(driver='{SQL Server}', server='localhost', database='test', uid='me', pwd='me2') 
2

Rời ra số cổng (1433) trong chuỗi kết nối, ném lỗi tại tôi từ một khách hàng Linux (nhưng không phải là Windows 7). Đó có lẽ là vấn đề về cấu hình nhưng tôi không có thời gian để theo đuổi nó.

Đưa điều này ra khỏi đó, trong trường hợp nó giúp người khác.

Các vấn đề liên quan