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