2.6 動態 SQL

存在一個引號函數,可轉義 SQL 名稱和識別碼。Session.quoteName() 會根據目前連線的設定,轉義指定的識別碼。

注意

引號函數不得用於轉義值。請改為使用 Session.sql() 的值繫結語法;如需範例,請參閱第 2.4 節「將 SQL 與會話搭配使用」

def createTestTable(session, name):

    # use escape function to quote names/identifier
    quoted_name = session.quote_name(name)
    session.sql("DROP TABLE IF EXISTS " + quoted_name).execute()
    create = "CREATE TABLE "
    create += quoted_name
    create += " (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT)"
    session.sql(create).execute()
    return session.get_current_schema().get_table(name)

from mysqlsh import mysqlx

session = mysqlx.get_session('user:password@localhost:33060/test')

default_schema = session.get_default_schema().name
session.set_current_schema(default_schema)

# Creates some tables
table1 = createTestTable(session, 'test1')
table2 = createTestTable(session, 'test2')

使用 X DevAPI 的程式碼不需要轉義識別碼。這適用於使用集合以及使用關聯式資料表。