2.1 数据库连接示例

连接到 MySQL 文档存储所需的代码与传统的 MySQL 连接代码非常相似,但现在应用程序可以建立到运行 X 插件的 MySQL 服务器实例的逻辑会话。会话由 mysqlx 工厂生成,返回的会话可以封装对运行 X 插件的一个或多个 MySQL 服务器实例的访问。默认使用会话对象的应用程序可以在单服务器设置和数据库集群上部署,而无需代码更改。

使用 mysqlx.getSession(connection) 方法创建 X DevAPI 会话。您传入连接到 MySQL 服务器的连接参数,例如主机名和用户,这与经典 API 中的代码非常相似。连接参数可以指定为 URI 类型字符串,例如 user:@localhost:33060,或数据字典,例如 {user: myuser, password: mypassword, host: example.com, port: 33060}。有关更多信息,请参阅 使用 URI 类字符串或键值对连接到服务器

用于连接的 MySQL 用户帐户应使用 mysql_native_passwordcaching_sha2_password 身份验证插件,请参阅 可插拔身份验证。您要连接到的服务器应启用加密连接,这是 MySQL 8.0 及更高版本中的默认设置。这确保客户端使用 X 协议 PLAIN 密码机制,该机制适用于使用任一身份验证插件的用户的帐户。如果您尝试连接到未启用加密连接的服务器实例,对于使用 mysql_native_password 插件的用户的帐户,将首先尝试使用 MYSQL41 进行身份验证,而对于使用 caching_sha2_password 插件的用户帐户,则将回退到 SHA256_MEMORY

以下示例代码展示了如何连接到 MySQL 服务器并从 my_collection 集合中获取具有以 L 开头的 name 字段的文档。该示例假定存在名为 test 的模式,并且 my_collection 集合存在。要使示例正常工作,请将 user 替换为您的用户名,并将 password 替换为您的密码。如果您连接到不同的主机或通过不同的端口,请将主机从 localhost 更改为,并将端口从 33060 更改为。

from mysqlsh import mysqlx

# Connect to server on localhost
mySession = mysqlx.get_session( {
        'host': 'localhost', 'port': 33060,
        'user': 'user', 'password': 'password' } )

myDb = mySession.get_schema('test')

# Use the collection 'my_collection'
myColl = myDb.get_collection('my_collection')

# Specify which document to find with Collection.find() and
# fetch it from the database with .execute()
myDocs = myColl.find('name like :param').limit(1).bind('param', 'L%').execute()

# Print document
document = myDocs.fetch_one()
print(document)

mySession.close()