2011-11-04 8 views
6

Chciałbym połączyć się z bazą danych MySQL, która wymaga ca-cert. Mogę to zrobić z MySQLdb jak poniżej:Jak utworzyć połączenie mysql, które wymaga CA-CERT z sqlalchemy lub 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 } 

Jak mogę zrobić to samo, że w SQLAlchemy lub SQLObject?

Dzięki Peter

Odpowiedz

3

create_engine() in SQLAlchemy ma connect_args parametr:

connect_args - słownik opcji, które będą przekazywane bezpośrednio do connect() metoda DBAPI jako dodatkowe argumenty na słowa kluczowe.

+0

Dzięki za odpowiedź i link. W dokumentacji nie ma przykładów tego, jakie są te opcje? Czy są one identyczne z biblioteką MySQLdb? – cfpete

+0

Są one przekazywane bezpośrednio do 'connect()' interfejsu API DB, tj. 'MySQLdb.connect()' w twoim przypadku. –

+0

rozumiem, więc jest identyczny. Dzięki! – cfpete

17

Aby korzystać z certyfikatów SSL z SQLAlchemy i MySQLdb, należy użyć następującego kodu Pythona:

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 (niesprawdzone):

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, 
) 
Powiązane problemy