2011-11-04 37 views
6

Tôi muốn kết nối với cơ sở dữ liệu MySQL yêu cầu phải có chứng chỉ. Tôi có thể làm điều đó với MySQLdb như dưới đây:Cách tạo kết nối mysql yêu cầu CA-CERT với sqlalchemy hoặc SQLObject

MySQLdb.connect(host = self.host, 
       port = self.port, 
       unix_socket = self.unix_socket, 
       user = self.user,         
       passwd = self.passwd, 
       db = self.db, 
       ssl = { 'cert': self.sslcert, 
         'key': self.sslkey, 
         'ca': self.sslca } 

Làm cách nào để suy nghĩ tương tự trong SQLAlchemy hoặc SQLObject?

Cảm ơn, peter

Trả lời

3

create_engine() in SQLAlchemy có một tham số connect_args:

connect_args - một cuốn từ điển các tùy chọn mà sẽ được chuyển trực tiếp phương pháp của DBAPI connect() như các đối số từ khóa bổ sung.

+0

Cảm ơn cho câu trả lời và liên kết. Tài liệu dường như không có ví dụ về những tùy chọn đó là gì? Họ có giống hệt với thư viện MySQLdb không? – cfpete

+0

Chúng được chuyển trực tiếp tới 'connect()' của DB API, tức là 'MySQLdb.connect()' trong trường hợp của bạn. –

+0

đã nhận nó, vì vậy nó giống hệt nhau. Cảm ơn! – cfpete

17

Để sử dụng SSL certs với SQLAlchemy và MySQLdb, sử dụng mã python sau:

db_connect_string='mysql://<user>:<pswd>@<db server>:3306/<database>' 
ssl_args = {'ssl': {'cert':'/path/to/client-cert', 
        'key':'/path/to/client-key', 
         'ca':'/path/to/ca-cert'}} 

create_engine(db_connect_string, connect_args=ssl_args) 
0

SQLObject (chưa được kiểm tra):

from sqlobject.mysql import MySQLConnection 
connection = MySQLConnection(
    db=self.db, 
    user=self.user, 
    password=self.password, 
    host=self.host, 
    ssl_key=self.sslkey, 
    ssl_cert=self.sslcert, 
    ssl_ca=self.sslca, 
) 
Các vấn đề liên quan