Програмирање

Овладавање базом података СКЛите у Питхону

Овладавање базом података СКЛите у Питхону

СКЛите је релациони систем управљања базама података заснован на СКЛ језику; то је мотор без базе података са Зеро-конфигурацијом без сервера. То је један од најпопуларнијих мотора база података и врло је једноставан за употребу у малим апликацијама. Ствара само једну датотеку диска за чување целе базе података, што датотеку чини преносном. Користи се у Андроид ОС-у као примарни извор за чување података. Такође га користи Гоогле Цхроме за складиштење података о веб локацијама и корисничких података, укључујући лозинке у локалној машини.

Напредни рад са базом података СКЛите у Питхону

У овом водичу теме које ће бити обрађене су: уметање слика у СКЛите табелу, навођење табела присутних у бази података, утврђивање укупних промена од када је база података повезана, израда резервне копије базе података, избацивање СКЛите базе података, враћање у СКЛите, брисање записи из табеле, испуштање табеле и изузеци базе података СКЛите.

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

Датотеке и слике у бази података СКЛите

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

Да бисмо додали слике у СКЛите базу података, морамо да користимо БЛОБ тип података СКЛите. Тип података БЛОБ () користи се за чување великих објеката, обично великих датотека, као што су слике, музика, видео записи, документи, ПДФ итд. Први корак је претварање података и слика у бајтни објекат Питхона, који је сличан БЛОБ типу података СКЛите-а. Пре него што наставите, креирајте табелу са именом ученик у бази података са пољима ид, име, слике, ознаке. Покрените следећи код да бисте креирали табелу.

увоз склите3 цонн = склите3.повезати ("узорак.дб ") принт (" \ н [+] Успешно повезан са базом података ") цур = цонн.цурсор () принт ("\ н [+] Курсор је успешно постављен") табле = цур.екецуте ("" "ЦРЕАТЕ ТАБЛЕ студент (ид ИНТ ПРИМАРИ КЕИ, наме ТЕКСТ, имагес БЛОБ, маркс ТЕКСТ);" "") принт ("\ н [+] Табела је успешно креирана") цур.цлосе () цонн.цоммит () цонн.Близу()

Овај програм ће створити нову табелу са именом ученик. У терминалу ћете видети следећи излаз.

Уметање слике

Да бисте уметнули слику у СКЛите базу података, трансформишите је у питхон бите објекат, а затим је уметните у колону имагес, која прихвата БЛОБ податке. Покрените следећи код да бисте додали слику имг.пнг у бази података користећи Питхон.

увоз склите3 цонн = склите3.повезати ("узорак.дб ") повез.тект_фацтори = стр принт ("\ н [+] Успешно повезан са базом података") цур = цонн.цурсор () принт ("\ н [+] Курсор је успешно постављен") са опен ("имг.пнг "," рб ") као датотека: подаци = датотека.реад () питхон_тупле = (101, "робин", подаци, "90") принт ("\ н [+] Слика је успешно увезена") принт ("\ н [+] Сада се убацује у базу података") цур.екецуте ("ИНСЕРТ ИНТО студент (ид, наме, имагес, маркс) ВАЛУЕС (?,?,?,?) ", питхон_тупле) принт (" \ н [+] Подаци су успешно уметнути ") цур.цлосе () цонн.цоммит () цонн.Близу()

Овај програм ће уметнути слику у студентску базу података коју сте креирали. Видећете следећи излаз.

У горе наведеном програму отворили смо датотеку у бинарном режиму и прочитали сваки бајт и сачували је у променљивој подаци. Затим користимо ту променљиву у наредби ИНСЕРТ за уметање слике у базу података.

Преузимање слике

Да бисте преузели слику из базе података, дохватите ред помоћу наредбе селецт, а затим приступите бинарним подацима слике у питхон променљиву која ће бити ускладиштена у датотеци слике. Погледајте следећи код за илустрацију.

увоз склите3 цонн = склите3.повезати ("узорак.дб ") повез.тект_фацтори = стр принт ("\ н [+] Успешно повезан са базом података") цур = цонн.цурсор () принт ("\ н [+] Курсор је успешно постављен") принт ("\ н [+] Преузимање слике") цур.изврши ("СЕЛЕЦТ * ФРОМ студент") рет = цур.фетцхалл () за и у рет: дата = и [2] са опен ("имг2.пнг "," вб ") као датотека: датотека.врите (дата) принт ("\ н [+] Слика је сачувана") цур.цлосе () цонн.цоммит () цонн.Близу()

Овај једноставан програм ће преузети слику из базе података и сачувати је на диску под називом имг2.пнг. Такође можете одабрати друго име за датотеку слике. Резултат програма је приказан у наставку.

Наведите све табеле базе података

У бази података можемо створити бројне табеле. Дакле, такође је потребно навести све табеле присутне у бази података. Да бисте пописали табеле присутне у бази података, упитајте склите_мастер табелу користећи наредбу СЕЛЕЦТ СКЛ-а. Синтакса упита биће:

ИЗАБЕРИТЕ име ИЗ склите_мастер ВХЕРЕ типе = "табле"

Ево како користимо овај упит за попис свих табела присутних у нашој бази података.

увоз склите3 цонн = склите3.повезати ("узорак.дб ") принт (" \ н [+] Успешно повезан са базом података ") цур = цонн.цурсор () принт ("\ н [+] Курсор је успешно постављен") цур.изврши ("СЕЛЕЦТ име из склите_мастер где је типе =" табле "") редови = цур.фетцхалл () принт (редови) цур.цлосе () цонн.цоммит () цонн.Близу()

Горњи код ће навести све табеле присутне у нашој бази података. Излаз који код ствара када се изврши је следећи. Можда ћете видети неке друге резултате у зависности од табела које сте креирали у бази података.

Идентификовање укупних промена од повезивања са базом података

У било којој ситуацији корисно је идентификовати број редова који су измењени, уметнути или избрисани од када је база података повезана. За то користите тотал_цхангес () метода објекта повезивања, која ће вратити укупан број редова базе података који су погођени од повезивања. Погледајмо пример демонстрације да бисмо знали како то ради.

увоз склите3 цонн = склите3.повезати ("узорак.дб ") повез.тект_фацтори = стр принт ("\ н [+] Успешно повезан са обе базе података") цур = цонн.цурсор () принт ("\ н [+] Оба курсора су успешно постављена") цур.екецуте ("ИНСЕРТ ИНТО студент (ид, наме, имагес, маркс) ВАЛУЕС (140, 'Давид',", 99) ") цур.екецуте ("ИНСЕРТ ИНТО студент (ид, наме, имагес, маркс) ВАЛУЕС (150, 'Сам',", 97) ") цхангес = цонн.тотал_цхангес принт ("\ н [+] Укупан број промена редова је:", промене) цонн.цоммит () цур.цлосе () цонн.Близу()

Горњи програм ће исписати број промена редова у тренутној вези. Видећете следећи излаз.

Враћање у СКЛите

Када је реч о поништавању неких задатака, можете да користите функцију враћања (). Овом методом можете поништити задатак који је урађен након последњег урезивања. Погледајте пример у наставку за илустрацију.

увоз склите3 цонн = склите3.повезати ("узорак.дб ") повез.тект_фацтори = стр принт ("\ н [+] Успешно повезан са обе базе података") цур = цонн.цурсор () принт ("\ н [+] Оба курсора су успешно постављена") цур.екецуте ("ИНСЕРТ ИНТО студент (ид, наме, имагес, маркс) ВАЛУЕС (100001, 'Давид',", 99) ") цур.екецуте ("ИНСЕРТ ИНТО студент (ид, наме, имагес, маркс) ВАЛУЕС (100002, 'Сам',", 97) ") цонн.цоммит () принт ("\ н [+] Два реда су успешно уметнута") цур.извршити („СЕЛЕЦТ * ФРОМ студент“) прво = цур.фетцхалл () принт ("\ н [+] Нови записи у бази података су:") за и ин фирст: принт (и) цур.екецуте ("ИНСЕРТ ИНТО студент (ид, наме, имагес, маркс) ВАЛУЕС (10003, 'Кисхан',", 100) ") цур.екецуте ("ИНСЕРТ ИНТО студент (ид, наме, имагес, маркс) ВАЛУЕС (10004, 'Анкит',", 100) ") принт (" \ н [+] Два реда су успешно уметнута, али нису додељена ") цонн.роллбацк () принт ("\ н [+] Вратили смо претходне наредбе тако да нови подаци неће бити уметнути") цонн.цоммит () цур.изврши ("СЕЛЕЦТ * ФРОМ студент") сецонд = цур.фетцхалл () принт ("\ н [+] Нови записи у бази података су:") за и у секунди: принт (и) цур.цлосе () цонн.Близу()

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

Направите резервну копију базе података

Током рада са базом података, неопходно је направити сигурносну копију базе података. Модул склите3 пружа функцију за израду сигурносне копије базе података. Користећи бацкуп () методу објекта повезивања, можемо направити сигурносну копију СКЛите базе података. Основна синтакса методе израде резервних копија је:

сигурносна копија (таргет, *, пагес = 0, прогресс = Ноне, наме = "маин", слееп = 0.250)

Подразумевано или када странице су или 0 или негативан цео број, целокупна база података се копира у једном кораку, што је пожељно за малу базу података; у супротном, метода врши копирање петље до странице у време које би се могло урадити помоћу обимне базе података. Тхе име аргумент показује име базе података које ће се копирати: то мора бити низ који садржи или подразумевану вредност, да означи главну базу података или да означи привремену базу података. Тхе спавати аргумент одређује вријеме у секундама за спавање између покушаја сигурносне копије преосталих страница. Може бити као цео број или вредност са покретном зарезом.

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

увоз склите3 цонн_маин = склите3.повезати ("узорак.дб ") цонн_бацкуп = склите3.цоннецт ("сампле_бацкуп.дб ") принт (" \ н [+] Успешно повезан са обе базе података ") цур_маин = цонн_маин.цурсор () цур_бацкуп = цонн_бацкуп.цурсор () принт ("\ н [+] Оба курсора су успешно постављена") цонн_маин.бацкуп (цонн_бацкуп, пагес = 0, прогресс = Ноне, наме = "маин") принт ("База података је успешно направила резервну копију") цур_маин.цлосе () цур_бацкуп.цлосе () цонн_маин.цоммит () цонн_бацкуп.цоммит () цонн_маин.цлосе () цонн_бацкуп.Близу()

У горњем коду две базе података су повезане, једна је база података од које желимо да направимо резервну копију, а друга база података у којој ћемо узети резервну копију. Користити сигурносна копија () метода првог објекта везе базе података за прављење резервне копије. Ова функција прихвата објекат повезивања друге базе података као циљ за стварање сигурносне копије на другој бази података. Користити странице = 0 аргумената, па ће се процес одвијати у једном кораку, што се препоручује за мале базе података. Овај програм ће створити нови узорак имена базе података_бацкуп.дб и попуните га резервном копијом прве базе података. Можда ћете видети да је у тренутној фасцикли креирана нова база података исте величине датотеке као и претходна.

Избацивање СКЛите базе података

Депоновање база података је важан задатак. Думп датотека је обично скуп СКЛ израза података, који се обично користи за израду резервних копија. Базу података можемо избацити помоћу методе думп (). Погледајте доњи пример да бисте знали како испустити СКЛите базу података.

увоз склите3 цон = склите3.цоннецт ("база података.дб ") са отвореним ('думп.скл ',' в ') као ф: за линију у цон.итердумп (): ф.врите ('% с \ н'% линија)

Горњи програм ће избацити узорак базе података.дб и сачуваће одбачене податке у датотеку која се зове думп.скл. Можете видети податке присутне у директоријуму у којем су датотеке питхон актуелне и отворити их помоћу било ког уређивача текста.

метода екецутемани () СКЛите3

Тхе егзекуција () метода извршава СКЛ наредбу против свих секвенци параметара или пресликавања пронађених у секвенци сек_оф_параметерс. Ради једноставности, овај метод се може користити за извршавање већине СКЛ наредби у једном реду. Е.г., Помоћу ове наредбе можемо уметнути било који број редова кроз питхон листу. Погледајте илустрацију у доњем примеру.

увоз склите3 цонн = склите3.повезати ("узорак.дб ") принт (" \ н [+] Успешно повезан са базом података ") цур = цонн.цурсор () принт ("\ н [+] Курсор је успешно постављен") питхон_лист = [(10000000, 'вивек', ", '10'), (100000001, 'росе',", '21'), (100000002, 'робин', ", '31'), (100000003, 'Дев',", '4'), (100000004, 'мицхаел', ", '52')] цур.екецутемани ("ИНСЕРТ ИНТО студент (ид, наме, имагес, маркс) ВАЛУЕС (?,?,?,?) ", питхон_лист) принт (" \ н [+] Сви подаци су успешно уметнути ") цур.цлосе () цонн.цоммит () цонн.Близу()

Горњи програм ће уметнути све податке дате на питхон листи. Излаз који производи програм приказан је испод.

Избришите записе из табеле

Можемо користити операцију ДЕЛЕТЕ за брисање записа из табеле. Брзо можемо уклонити ред користећи операцију ДЕЛЕТЕ са клаузулом ВХЕРЕ. Основна синтакса израза ДЕЛЕТЕ је:

ИЗБРИШИ из име_табеле ГДЕ неки_услов;

Да видимо пример. Избришемо ред са ид 1001 из табеле запослених у нашој бази података.

увоз склите3 цонн = склите3.повезати ("узорак.дб ") повез.тект_фацтори = стр принт ("\ н [+] Успешно повезан са базом података") цур = цонн.цурсор () принт ("\ н [+] Курсор је успешно постављен") цур.екецуте ("ДЕЛЕТЕ ФРОМ студент ВХЕРЕ ид = 1001") принт ("\ н [+] Ред је успешно избрисан") цур.извршити („СЕЛЕЦТ * ФРОМ студент“) подаци = цур.фетцхалл () за ред у подацима: принт (ров) цур.цлосе () цонн.цоммит () цонн.Близу()

Горњи код ће избрисати ред са ИД 1001. Из повратка наредбе СЕЛЕЦТ можете видети да је ред уклоњен. Резултат програма је као што је приказано доле.

Баците сто

Табелу можемо брзо испустити или избрисати помоћу СКЛите ДРОП наредбе. Синтакса израза ДРОП је приказана доле:

ДРОП табела име_табеле 

Ако табела не постоји, тада ће СКЛите избацити грешку, па да бисмо то спречили, можемо користити ако постоје ознака са изразом ДРОП. Погледајте доњу синтаксу:

ДРОП табле ако постоји табле_наме

Погледајмо како ову изјаву можемо користити са питхоном склите3 модул за брисање табеле. У овом програму ћемо уклонити ученик табела коју смо раније креирали.

увоз склите3 цонн = склите3.повезати ("узорак.дб ") повез.тект_фацтори = стр принт ("\ н [+] Успешно повезан са базом података") цур = цонн.цурсор () принт ("\ н [+] Курсор је успешно постављен") цур.екецуте ("ДРОП ТАБЛЕ ИФ ЕКСИСТС студент") принт ("\ н [+] Табела је успешно испуштена") цур.цлосе () цонн.цоммит () цонн.Близу()

Горњи програм ће обрисати табелу ученик од узорак база података. Можемо да користимо команду листе табеле коју смо раније видели да бисмо видели да ли је табела избрисана. Резултат програма је као што је приказано доле.

Изузеци базе података СКЛите

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

Ово је листа свих СКЛите изузетака; можемо се носити са тим изузецима у нашим програмима користећи основни Питхон метод за руковање грешкама / осим грешака.

Закључак

То нас доводи до краја свеобухватног водича о напредним методама рада са СКЛите-ом помоћу Питхона. Надам се да сте научили све аспекте СКЛите3 користећи Питхон, који ће нам помоћи да изградимо фантастичне Питхон пројекте.

Водич за битку за Веснотх
Битка за Веснотх је једна од најпопуларнијих стратешких игара отвореног кода које тренутно можете играти. Не само да је ова игра у развоју већ јако ду...
0 А.Д. Приручник
Од многих стратешких игара тамо, 0 А.Д. успева да се истакне као свеобухватан наслов и врло дубока, тактичка игра упркос томе што је отворен извор. Ра...
Водич за Унити3Д
Увод у Унити 3Д Унити 3Д је моћан мотор за развој игара. То је унакрсна платформа која вам омогућава да креирате игре за мобилне уређаје, веб, стоне р...