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 的代码不需要转义标识符。这对使用集合和使用关系表都适用。