Не вводите строки с вложенными кавычками. Вам нравится избегать вложенных кавычек? Если нет, используйте ~s|...|
или ~s{...}
или ~s(...)
или ~s<....>
вместо внешних двойных кавычек. Например:
iex(2)> ~s|I said, "Go home!"|
"I said, \"Go home!\""
Вот ваше заявление с использованием ~s
сигил:
execute(~s|INSERT INTO t2.tenants ("id", "inserted_at", "name", "status", "updated_at") values ('1', '2019-07-08 10:37:28', 'tudo_', 'active', '2019-07-08 10:37:30')|)
Но эта линия еще слишком длинная. Итак, сделайте что-то вроде этого:
columns = ~s|("id", "inserted_at", "name", "status", "updated_at")|
values = "('1', '2019-07-08 10:37:28', 'tudo_', 'active', '2019-07-08 10:37:30')"
query = "INSERT INTO t2.tenants #{columns} values #{values}"
IO.inspect query
execute(query)
Вот как выглядит query
:
"INSERT INTO t2.tenants
(\"id\", \"inserted_at\", \"name\", \"status\", \"updated_at\")
values
('1', '2019-07-08 10:37:28', 'tudo_', 'active', '2019-07-08 10:37:30')"
, пожалуйста, помогите мне, как выполнить запрос выбора?
execute("(SELECT MAX(id) from \"t2.tenants\")")
1) Требуется ли вашей базе данных круглые скобки вокруг оператора SELECT?
| |
V V
"(SELECT MAX(id) from \"t2.tenants\")"
2) В вашем успешном операторе INSERT вам не нужно было указывать имя таблицы. Действительно ли ваша база данных требует, чтобы вы указали имя таблицы в SELECT?
| |
V V
"(SELECT MAX(id) from \"t2.tenants\")"
Как насчет:
execute("SELECT MAX(id) from t2.tenants")
Однако execute()
возвращает :ok
в случае успеха, поэтому я не уверен, насколько полезно выполнение этого оператора SELECT. Возможно, вы захотите взглянуть на Ecto.Adapters.SQL.query () .