Как сделать подключение MySQL, который требует CA-CERT с sqlalchemy или SQLObject - PullRequest
10 голосов
/ 04 ноября 2011

Я хотел бы подключиться к базе данных MySQL, которая требует сертификации. Я могу сделать это с MySQLdb, как показано ниже:

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 } 

Как мне так же мыслить в SQLAlchemy или SQLObject?

Спасибо, питер

Ответы [ 4 ]

31 голосов
/ 21 февраля 2013

Чтобы использовать SSL-сертификаты с SQLAlchemy и MySQLdb, используйте следующий код Python:

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)
4 голосов
/ 07 ноября 2011

create_engine () в SQLAlchemy имеет параметр connect_args:

connect_args - словарь опций, которые будут переданы напрямую к методу DBAPI connect() в качестве дополнительных аргументов ключевого слова.

1 голос
/ 14 мая 2018

В соответствии с их документами , функция create_engine SQLAlchemy принимает URL-адрес БД в следующем формате: dialect[+driver]://user:password@host/dbname[?key=value..], что означает, что вы можете передать ключ ssl, сертификат и CA как пары значений ключа.*

0 голосов
/ 08 мая 2017

SQLObject (не проверено):

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,
)
...