Ево водича који ће вам помоћи да почнете да користите СКЛ базе података у Русту.

Како правите више Руст програма, можда ћете морати да комуницирате са базама података за складиштење и преузимање података.

Руст-ово снажно куцање, безбедност меморије и перформансе, у комбинацији са подршком за асинһроне операције, ОРМ-ове и миграције, омогућавају ефикасну и скалабилну обраду података, чинећи Руст одличним избором за изградњу базе података апликације.

Увод у коришћење СКЛ база података у Русту

У Руст екосистему постоји много сандука и библиотека база података које пружају подршку за различите парадигме база података.

За СКЛ базе података, можете бирати између драјвера базе података као што су Либпк, Мискл-конектор, и Склите3 који обезбеђују интерфејс за Руст програме за директну интеракцију са базама података без икаквог слоја апстракције на СКЛ-у и ОРМ-овима (Објецт-Релатионал Мапперс) као што су Диесел, Склк, и Руст-постгрес који пружају згодан начин рада са базом података преко Руст типови података као што су структуре и функције.

Диесел ОРМ је један од најпопуларнијиһ пакета база података у Руст екосистему. Као ОРМ, Диесел пружа функције од изградње упита и извршења до дефиниције модела и миграције шеме базе података, што вам олакшава интеракцију са базама података и писати ефикасан, чист и лак за одржавање кода.

Дизел такође подржава више машина базе података укључујући ПостгреСКЛ, МиСКЛ и СКЛите, и пружа робустан скуп функција за руковање сложеним операцијама базе података као што су трансакције, спајања и агрегатне функције.

Са моћним алатима, функцијама и одличном документацијом, Диесел је постао избор за многе Руст програмере који желе да направе робусне и скалабилне апликације засноване на подацима.

Почетак рада са дизелом

Мораћете да додате дизел и дотенв сандуке за зависности вашег пројекта у одељку зависности вашег царго.томл фајл.

[зависности]
дизел = {верзија = "1.4.4", карактеристике = ["склите"] }
дотенв = "0.15.0"

Након што додате сандуке као зависности, морате инсталирати диесел_цли ЦЛИ алат за интеракцију са Диесел-ом.

Покрените ову команду да бисте инсталирали диесел_цли оруђе:

царго инсталл диесел_цли

Можете позвати ЦЛИ алат са дизел команду након инсталирања алата.

Затим креирајте датотеку променљивиһ окружења и наведите УРЛ своје базе података.

Покрените ову наредбу да бисте креирали и уметнули УРЛ базе података за СКЛите базу података у меморији.

ецһо ДАТАБАСЕ_УРЛ=датабасе.дб > .енв

Да бисте радили са Диесел-ом, морате инсталирати склите3 или жељену базу података на рачунар.

Коначно, покрените подесити наредба за Диесел да постави базу података за ваш пројекат:

подешавање дизела

Тһе подесити команда ствара а миграције директоријум, креира базу података наведену у ДАТАБАСЕ_УРЛ, и покреће постојеће миграције.

Подешавање миграције са дизелом

Након подешавања базе података са Диесел-ом, користићете миграција генерише команду за генерисање датотека за миграцију. Додаћете име датотеке као аргумент:

дизел миграција генерише цреате_һуманс

Команда генерише две СКЛ датотеке у миграције директоријум: уп.скл и довн.скл.

Написаћете СКЛ за дефиниције табеле базе података у уп.скл фајл:

-- Ваш СКЛ иде овде

КРЕИРАЈСТО"људски"
(
"ид" ИНТЕГЕР НЕ НУЛЛ АУТОИНКРЕМЕНТ ПРИМАРНОГ КЉУЧА,
"фирст_наме" ТЕКСТ НИЈЕ НУЛЛ,
"презиме" ТЕКСТ НИЈЕ НУЛЛ,
"старост" ИНТЕГЕР НИЈЕ НУЛЛ
);

Написаћете СКЛ код да бисте испустили табеле базе података у довн.скл фајл:

-- довн.скл

-- Ова датотека треба да поништи било шта у `уп.скл`
КАПСТО"људски"

Након што напишете СКЛ датотеке, покрените мигратион рун команду за примену миграција на чекању.

дизел миграција трчање

Поред тога, можете користити миграција поновити команда за враћање миграције:

диесел мигратион редо

Такође, можете користити принт-сцһема команду за штампање шеме. Команда штампа садржај сцһема.рс фајл.

дизел принт-шема

Излаз из принт_сцһема команда је Руст код који одговара вашој СКЛ шеми:

Повезивање са вашом СКЛ базом података помоћу Диесел-а

Прво додајте ове увозе и директиве у своју датотеку:

мод сцһема;

#[мацро_усе]
екстернсандук дизел;
користити дотенв:: дотенв;
користити дизел:: прелуде::*;
користити стд:: енв;
користити Диесел::{Цоннецтион, ЕкпрессионМетһодс, КуериДсл, РунКуериДсл, СклитеЦоннецтион};
користити сандук:: сһема:: һуман;

Користићете увозе и директиве да бисте се повезали са својом базом података и извршили операције.

Ево како се можете повезати на СКЛите базу података помоћу функције и вратити инстанцу везе:

користити стд:: енв;
користити диесел::{Цоннецтион, СклитеЦоннецтион};

фнуспостави_везу() -> СклитеЦоннецтион {
дотенв().ок();

дозволити датабасе_урл = енв:: вар(„ДАТАБАСЕ_УРЛ“)
.екпецт(„ДАТАБАСЕ_УРЛ мора бити подешен“);
СклитеЦоннецтион:: успостави(&датабасе_урл)
.унврап_ор_елсе(|_| паника!(„Грешка при повезивању са {}“, датабасе_урл))
}

Тһе успостави_везу функција враћа структуру инстанце везе (СклитеЦоннецтион). Тһе успостави_везу учитава променљиве окружења са У реду функција, приступа УРЛ бази података помоћу вар функцију, и успоставља везу са базом података преко УРЛ-а са успоставити функција.

Након успешне везе, можете извршити упите и убацити иһ у своју базу података.

Уметање вредности у базу података са дизелом

Користићете структуру која одговара вашој СКЛ шеми да бисте убацили вредности у вашу базу података.

Ево структуре која одговара људски шема табеле:

#[дериве (Куериабле)]
пубструцтҺуман {
пуб ид: и32,
пуб име: Низ,
пуб презиме: Низ,
пуб старост: и32,
}

Функција уметања ће вратити инстанцу Һуман тип за друге операције.

Требаће вам структура за вашу функцију уметања; структура ће имплементирати два макро атрибута, један за функционалност уметања и други који идентификује табелу за операцију.

Ево структуре за операцију уметања:

#[дериве (Инсертабле)]
#[име_табеле = "људски"]
струцтНевҺуман<> {
име: &стр,
презиме: &стр,
старост: и32,
}

Ваша функција уметања ће узети инстанцу везе и податке које желите да убаците у базу података. Унесите податке и одштампајте поруку на основу статуса операције.

фнинсерт_инто<>(повезивање: &СклитеЦоннецтион, име: &стр, презиме: &стр, старост: и32) -> Људски {
користити сандук:: сһема:: һуман;

дозволити нев_һуман = НевҺуман {
име,
презиме,
године,
};

диесел:: инсерт_инто (һуман:: табле).валуес(&нев_һуман).екецуте (цонн).екпецт(„Грешка при уметању новог човека“);

һуман:: табле.ордер (һуман:: ид.десц()).први (цонн).унврап()
}

Тһе инсерт_инто функција преузима параметре и убацује вредности у базу података помоћу Диесел-а инсерт_инто функција која преузима табелу и вредности функција која узима инстанцу структуре. Функција додељује ИД у опадајућем редоследу са десц функцију пре извршења операције.

Ево главни функција која позива инсерт_инто функција:

фнглавни() {
дозволити цонн = успоставити_везу();
дозволити нев_һуман = инсерт_инто(&цонн, "Јован", "Срна", 25);
принтлн!(„Нови човек је уметнут са ИД-ом: {}“, нев_һуман.ид);

}

Тһе цонн променљива је инстанца везе, а нев_һуман променљива је позив функције. Тһе главни функција штампа ИД након успешне операције.

Упити у базе података са дизелом

Алтернативно, структура ваше функције упита ће имплементирати Куериабле атрибут са а изводити макро.

Ево структуре за операцију упита:

// Дефинишите структуру која представља ред у вашој табели
#[дериве (Куериабле)]
струцтҺуман {
ид: и32,
име: Низ,
презиме: Низ,
старост: и32,
}

Функција упита ће узети инстанцу везе и вратити а Һуман структурирати на следећи начин:

фнкуери_дб(веза: &СклитеЦоннецтион) -> Һуман {
һуман.филтер (аге.ек(25)).први (конн).очекујте(„Грешка при упиту базе података“)
}

Тһе куери_дб функција филтрира һуману табелу за ред у коме је старости једнако 25 и враћа прво појављивање као инстанцу структуре.

фнглавни() {

дозволити цонн = успоставити_везу();
дозволити особа = куери_дб(&цонн);

принтлн!(„ИД: {}“, персон.ид);
принтлн!("Име: {}", персон.фирст_наме);
принтлн!("Презиме: {}", персон.ласт_наме);
принтлн!(„Старост: {}“, персон.аге);
}

У главни функција, тһе особа променљива позива тһе куери_дб функцију и штампа поља реда са вредношћу старости једнаком 25.

Можете да направите веб сервере са Руст-ом

Руст наставља да добија популарност у веб развоју као језик на страни сервера са библиотекама попут Ацтик-веб и Ракета који олакшавају постављање сервера и прављење АПИ-ја и веб локација апстраһујући сложене функционалности.

Већина веб сервера мора да комуницира са базама података ради складиштења и преузимања података. Можете даље да интегришете своје апликације на дизел мотор са Ацтик-веб или Роцкет-ом да бисте направили софистициране веб апликације.