如何使用sqlalchemy或SQLObject进行需要CA-CERT的mysql连接

时间:2011-11-04 19:32:55

标签: python mysql sqlalchemy sqlobject

我想连接到需要ca-cert的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 个答案:

答案 0 :(得分:31)

要在SQLAlchemy和MySQLdb中使用SSL证书,请使用以下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)

答案 1 :(得分:4)

create_engine() in SQLAlchemy有一个connect_args参数:

  

connect_args - 将直接传递的选项词典   DBAPI的connect()方法作为额外的关键字参数。

答案 2 :(得分:1)

根据他们的docs,SQLAlchemy的create_engine函数采用以下格式的db url:dialect[+driver]://user:password@host/dbname[?key=value..]意味着您可以将ssl key,cert和ca传递为键值对。

答案 3 :(得分:0)

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