2.1 資料庫連線範例

連線至 MySQL 文件儲存區所需的程式碼與傳統 MySQL 連線程式碼非常相似,但現在應用程式可以建立與執行 X Plugin 的 MySQL 伺服器執行個體的邏輯工作階段。工作階段由 mysqlx 工廠產生,而傳回的工作階段可以封裝對一個或多個執行 X Plugin 的 MySQL 伺服器執行個體的存取。預設使用 Session 物件的應用程式可以部署在單一伺服器設定和資料庫叢集上,而無需變更程式碼。

使用 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 Protocol PLAIN 密碼機制,該機制適用於使用任一驗證外掛程式的使用者帳戶。如果您嘗試連線至未啟用加密連線的伺服器執行個體,對於使用 mysql_native_password 外掛程式的使用者帳戶,會先嘗試使用 MYSQL41 進行驗證,而對於使用 caching_sha2_password 的使用者帳戶,則會回退至 SHA256_MEMORY 進行驗證。

以下範例程式碼顯示如何連線至 MySQL 伺服器,並從 my_collection 集合中取得欄位 nameL 開頭的文件。此範例假設存在名為 test 的 Schema,並且存在 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()