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, не нуждается в экранировании идентификаторов. Это верно для работы с коллекциями и для работы с реляционными таблицами.
© 2025 Oracle
Licensed under the GPLv2 License.