如何使用sqlalchemy或SQLObject创建需要CA证书的mysql连接

14 投票
4 回答
21832 浏览
提问于 2025-04-17 05:40

我想连接一个需要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 个回答

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

要在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)
8

在SQLAlchemy中,create_engine() 这个函数有一个叫做 connect_args 的参数:

connect_args 是一个字典,里面存放的是一些选项,这些选项会直接传递给数据库的 connect() 方法,作为额外的关键字参数。

撰写回答