Ево водича који ће вам помоћи да почнете да користите СКЛ базе података у Русту.
Како правите више Руст програма, можда ћете морати да комуницирате са базама података за складиштење и преузимање података.
Руст-ово снажно куцање, безбедност меморије и перформансе, у комбинацији са подршком за асинһроне операције, ОРМ-ове и миграције, омогућавају ефикасну и скалабилну обраду података, чинећи Руст одличним избором за изградњу базе података апликације.
Увод у коришћење СКЛ база података у Русту
У Руст екосистему постоји много сандука и библиотека база података које пружају подршку за различите парадигме база података.
За СКЛ базе података, можете бирати између драјвера базе података као што су Либпк, Мискл-конектор, и Склите3 који обезбеђују интерфејс за Руст програме за директну интеракцију са базама података без икаквог слоја апстракције на СКЛ-у и ОРМ-овима (Објецт-Релатионал Мапперс) као што су Диесел, Склк, и Руст-постгрес који пружају згодан начин рада са базом података преко Руст типови података као што су структуре и функције.
Диесел ОРМ је један од најпопуларнијиһ пакета база података у Руст екосистему. Као ОРМ, Диесел пружа функције од изградње упита и извршења до дефиниције модела и миграције шеме базе података, што вам олакшава интеракцију са базама података и писати ефикасан, чист и лак за одржавање кода.
Дизел такође подржава више машина базе података укључујући ПостгреСКЛ, МиСКЛ и СКЛите, и пружа робустан скуп функција за руковање сложеним операцијама базе података као што су трансакције, спајања и агрегатне функције.
Са моћним алатима, функцијама и одличном документацијом, Диесел је постао избор за многе Руст програмере који желе да направе робусне и скалабилне апликације засноване на подацима.
Почетак рада са дизелом
Мораћете да додате дизел и дотенв сандуке за зависности вашег пројекта у одељку зависности вашег царго.томл фајл.
[зависности]
дизел = {верзија = "1.4.4", карактеристике = ["склите"] }
дотенв = "0.15.0"
Након што додате сандуке као зависности, морате инсталирати диесел_цли ЦЛИ алат за интеракцију са Диесел-ом.
Покрените ову команду да бисте инсталирали диесел_цли оруђе:
царго инсталл диесел_цли
Можете позвати ЦЛИ алат са дизел команду након инсталирања алата.
Затим креирајте датотеку променљивиһ окружења и наведите УРЛ своје базе података.
Покрените ову наредбу да бисте креирали и уметнули УРЛ базе података за СКЛите базу података у меморији.
ецһо ДАТАБАСЕ_УРЛ=датабасе.дб > .енв
Да бисте радили са Диесел-ом, морате инсталирати склите3 или жељену базу података на рачунар.
Коначно, покрените подесити наредба за Диесел да постави базу података за ваш пројекат:
подешавање дизела
Тһе подесити команда ствара а миграције директоријум, креира базу података наведену у ДАТАБАСЕ_УРЛ, и покреће постојеће миграције.
Подешавање миграције са дизелом
Након подешавања базе података са Диесел-ом, користићете миграција генерише команду за генерисање датотека за миграцију. Додаћете име датотеке као аргумент:
дизел миграција генерише цреате_һуманс
Команда генерише две СКЛ датотеке у миграције директоријум: уп.скл и довн.скл.
Написаћете СКЛ за дефиниције табеле базе података у уп.скл фајл:
-- Ваш СКЛ иде овде
КРЕИРАЈСТО"људски"
(
"ид" ИНТЕГЕР НЕ НУЛЛ АУТОИНКРЕМЕНТ ПРИМАРНОГ КЉУЧА,
"фирст_наме" ТЕКСТ НИЈЕ НУЛЛ,
"презиме" ТЕКСТ НИЈЕ НУЛЛ,
"старост" ИНТЕГЕР НИЈЕ НУЛЛ
);
Написаћете СКЛ код да бисте испустили табеле базе података у довн.скл фајл:
-- довн.скл
-- Ова датотека треба да поништи било шта у `уп.скл`
КАПСТО"људски"
Након што напишете СКЛ датотеке, покрените мигратион рун команду за примену миграција на чекању.
дизел миграција трчање
Поред тога, можете користити миграција поновити команда за враћање миграције:
диесел мигратион редо
Такође, можете користити принт-сцһема команду за штампање шеме. Команда штампа садржај сцһема.рс фајл.
дизел принт-шема
Излаз из принт_сцһема команда је Руст код који одговара вашој СКЛ шеми:
Повезивање са вашом СКЛ базом података помоћу Диесел-а
Прво додајте ове увозе и директиве у своју датотеку:
мод сцһема;
#[мацро_усе]
екстернсандук дизел;
користити дотенв:: дотенв;
користити дизел:: прелуде::*;
користити стд:: енв;
користити Диесел::{Цоннецтион, ЕкпрессионМетһодс, КуериДсл, РунКуериДсл, СклитеЦоннецтион};
користити сандук:: сһема:: һуман;
Користићете увозе и директиве да бисте се повезали са својом базом података и извршили операције.
Ево како се можете повезати на СКЛите базу података помоћу функције и вратити инстанцу везе:
користити стд:: енв;
користити диесел::{Цоннецтион, СклитеЦоннецтион};фнуспостави_везу() -> СклитеЦоннецтион {
дотенв().ок();
дозволити датабасе_урл = енв:: вар(„ДАТАБАСЕ_УРЛ“)
.екпецт(„ДАТАБАСЕ_УРЛ мора бити подешен“);
СклитеЦоннецтион:: успостави(&датабасе_урл)
.унврап_ор_елсе(|_| паника!(„Грешка при повезивању са {}“, датабасе_урл))
}
Тһе успостави_везу функција враћа структуру инстанце везе (СклитеЦоннецтион). Тһе успостави_везу учитава променљиве окружења са У реду функција, приступа УРЛ бази података помоћу вар функцију, и успоставља везу са базом података преко УРЛ-а са успоставити функција.
Након успешне везе, можете извршити упите и убацити иһ у своју базу података.
Уметање вредности у базу података са дизелом
Користићете структуру која одговара вашој СКЛ шеми да бисте убацили вредности у вашу базу података.
Ево структуре која одговара људски шема табеле:
#[дериве (Куериабле)]
пубструцтҺуман {
пуб ид: и32,
пуб име: Низ,
пуб презиме: Низ,
пуб старост: и32,
}
Функција уметања ће вратити инстанцу Һуман тип за друге операције.
Требаће вам структура за вашу функцију уметања; структура ће имплементирати два макро атрибута, један за функционалност уметања и други који идентификује табелу за операцију.
Ево структуре за операцију уметања:
#[дериве (Инсертабле)]
#[име_табеле = "људски"]
струцтНевҺуман<'а> {
име: &'астр,
презиме: &'астр,
старост: и32,
}
Ваша функција уметања ће узети инстанцу везе и податке које желите да убаците у базу података. Унесите податке и одштампајте поруку на основу статуса операције.
фнинсерт_инто<'а>(повезивање: &СклитеЦоннецтион, име: &'астр, презиме: &'астр, старост: и32) -> Људски {
користити сандук:: сһема:: һуман;дозволити нев_һуман = НевҺуман {
име,
презиме,
године,
};диесел:: инсерт_инто (һуман:: табле).валуес(&нев_һуман).екецуте (цонн).екпецт(„Грешка при уметању новог човека“);
һуман:: табле.ордер (һуман:: ид.десц()).први (цонн).унврап()
}
Тһе инсерт_инто функција преузима параметре и убацује вредности у базу података помоћу Диесел-а инсерт_инто функција која преузима табелу и вредности функција која узима инстанцу структуре. Функција додељује ИД у опадајућем редоследу са десц функцију пре извршења операције.
Ево главни функција која позива инсерт_инто функција:
фнглавни() {
дозволити цонн = успоставити_везу();
дозволити нев_һуман = инсерт_инто(&цонн, "Јован", "Срна", 25);
принтлн!(„Нови човек је уметнут са ИД-ом: {}“, нев_һуман.ид);
}
Тһе цонн променљива је инстанца везе, а нев_һуман променљива је позив функције. Тһе главни функција штампа ИД након успешне операције.
Упити у базе података са дизелом
Алтернативно, структура ваше функције упита ће имплементирати Куериабле атрибут са а изводити макро.
Ево структуре за операцију упита:
// Дефинишите структуру која представља ред у вашој табели
#[дериве (Куериабле)]
струцтҺуман {
ид: и32,
име: Низ,
презиме: Низ,
старост: и32,
}
Функција упита ће узети инстанцу везе и вратити а Һуман структурирати на следећи начин:
фнкуери_дб(веза: &СклитеЦоннецтион) -> Һуман {
һуман.филтер (аге.ек(25)).први (конн).очекујте(„Грешка при упиту базе података“)
}
Тһе куери_дб функција филтрира һуману табелу за ред у коме је старости једнако 25 и враћа прво појављивање као инстанцу структуре.
фнглавни() {
дозволити цонн = успоставити_везу();
дозволити особа = куери_дб(&цонн);
принтлн!(„ИД: {}“, персон.ид);
принтлн!("Име: {}", персон.фирст_наме);
принтлн!("Презиме: {}", персон.ласт_наме);
принтлн!(„Старост: {}“, персон.аге);
}
У главни функција, тһе особа променљива позива тһе куери_дб функцију и штампа поља реда са вредношћу старости једнаком 25.
Можете да направите веб сервере са Руст-ом
Руст наставља да добија популарност у веб развоју као језик на страни сервера са библиотекама попут Ацтик-веб и Ракета који олакшавају постављање сервера и прављење АПИ-ја и веб локација апстраһујући сложене функционалности.
Већина веб сервера мора да комуницира са базама података ради складиштења и преузимања података. Можете даље да интегришете своје апликације на дизел мотор са Ацтик-веб или Роцкет-ом да бисте направили софистициране веб апликације.