13

我想连接到需要 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

4 回答 4

41

要将 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)
于 2013-02-20T23:53:12.803 回答
6

SQLAlchemy 中的 create_engine()有一个connect_args参数:

connect_argsconnect()– 一个选项字典,将作为附加关键字参数直接传递给 DBAPI 的方法。

于 2011-11-07T09:34:26.023 回答
1

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

于 2018-05-13T23:06:19.520 回答
1

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,
)
于 2017-05-07T21:21:49.363 回答