我想连接到需要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中进行相同的思考?
谢谢, 彼得
答案 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,
)