Съдържание
Нашите приложения са много повече от прости страници, затова трябва да създадем начини за съхраняване на данните в някаква система за постоянство, това е мястото, където Бази данни на карта, където за да се установи начинът, по който базата данни ще ни помогне, е, че моделите трябва да бъдат създадени.Един модел ни дава структурата, при която ще работи най -голямата логика на нашето приложение, тук ние даваме смисъл на различните обекти, с които трябва да имаме, за да упражняваме действията си.
Колба имате възможност да използвате различни видове Бази данни използвайки само ORM SQLA Алхимия.
ИзискванияНуждаем се от функционална инсталация на Колба, и съответните разрешения, за да можете да инсталирате повече компоненти чрез пип. Ако имаме възможност да работим Virtualenv е много по -препоръчително, но не е необходимо. Ако искаме да екстраполираме уроците, ще ни трябват някои База данни Какво MySQL в случай, че искаме да внесем функционалността в много по -реална среда, тъй като в упражненията ще работим sqlite като мярка за опростяване и да бъде по -практична.
Първото нещо, което ще направим, е да инсталираме SQLA алхимия, тази стъпка е много проста, трябва само да изпълним следната команда в разрешената за изпълнение конзола пип:
pip install flask-sqlalchemyВ края ще получим съобщение за успех, ако всичко е минало правилно:
Нека сега сложим SQLA алхимия за да работим, за това ще създадем малко приложение, където ще видим как можем да установим връзка с двигател на база данни. В този случай нашето приложение ще бъде извикано flasko и в него трябва да имаме следната структура.
1- Файл с име run.py който ще бъде в корена на приложението, този файл е този, който извършва основната инициализация на цялата ни среда.
2- Папка с име flasko и вътре в този файл, наречен __init__.py, където ще инициализираме използването на колба и на SQLA алхимия директно.
Нека видим на следното изображение как изглежда тази структура в проект:
След като знаем какво трябва да имаме, ще имаме съдържанието на нашите първоначални файлове. Във файла run.py трябва да имаме следното:
от flasko import appapp.run (отстраняване на грешки = вярно)След това във файла __init__.py ще поставим този код:
от колба за импортиране Flaskот flask.ext.sqlalchemy импортиране SQLAlchemyapp = Колба (__ име __) app.config ['SQLALCHEMY_DATABASE_URI'] = 'sqlite: //flaskodb.db'db = SQLAlchemy (приложение)Този последен код е много лесен за обяснение, просто импортираме Колба, след това внасяме SQLA алхимия, ние установяваме нашето приложение да работи с рамката и след това установяваме връзката с нашата База данни в такъв случай sqlite, където ще бъде извикан flaskdb.db и ще бъде в същата директория като нашето приложение. Накрая присвояваме обекта SQLA алхимия към променлива, наречена db с които ще работим по -късно.
Ако стартираме нашето приложение сега, то трябва да стартира без грешки, единственото нещо е, че няма да имаме резултат, защото приложението все още е празно.
Тъй като сега имаме основната конфигурация на нашето приложение, трябва да поставим основите за създаване на нашия модел, за това ще трябва да създадем папка в нашата папка, която съдържа файла __init__.py и точно там ще генерираме необходимото съдържание.
Нека да видим как се променя структурата на папките ни:
Както можем да видим в нашата нова папка с продукти, ние сме генерирали 3 файла, файл __init__.py който трябва да е празен, файл models.py и други views.py. С тази структура ще променим __init__.py от корена на нашето приложение, където е важно да не се бъркаме с __init__.py на продуктите.
от колба за импортиране Flaskот flask.ext.sqlalchemy импортиране SQLAlchemyapp = колба (__ име __) app.config ['SQLALCHEMY_DATABASE_URI'] = 'sqlite: ///flaskodb.db'db = SQLAlchemy (приложение) от register flaskoluprodukt. (продукт) db.create_all ()Това, което направихме, е, че след създаването на обекта db импортирахме изгледите от новата ни папка и регистрирахме a чертеж, накрая казваме на db обекта, че той трябва да създаде всички необходими таблици. Сега трябва да променим нашия файл models.py вътре в продукта и ще поставим следния код:
от flasko внос dbclass Продукт (db.Model): id = db.Column (db.Integer, primary_key = True) name = db.Column (db.String (255)) price = db.Column (db.Float) def __init__ (self, name, price): self.name = name self.price = price def __repr __ (self): return ''% self.idТук основно това, което правим, е дефинирайте клас които ще носят като атрибути полетата, които ще изискваме от нашия продукт, също така в него има няколко метода за дефиниране и представяне на нашия модел.
След като горното е изпълнено, отиваме към файла views.py, в това трябва да създадем кода, който ни позволява да взаимодействаме с нашия модел, за това трябва да напишем следното:
от заявка за импортиране на колба, jsonify, Blueprintот приложение за импортиране на flasko, db от flasko.product.models внос Productproduct = Blueprint ('product', __name __) @ app.route ('/') @ app.route ('/ start') def start (): връщане "Добре дошли във Flasko" @ app.route (' / product /') def product (id): product = Product.query.get_or_404 (id) return 'Product -% s, $% s'% ( product .name, product.price) @ app.route ('/ products') def products (): products = Product.query.all () res = {} за продукт в продукти: res [product.id] = {' name ': product.name,' price ': str (product.price)} return jsonify(res)@app.route (' / create-product ', methods = [' POST ',]) def create_product (): name = request.form.get ('name') price = request.form.get ('price') product = Продукт (име, цена) db.session.add (продукт) db.session.commit () return 'Продуктът беше успешно създаден 'Първото нещо, което забелязваме, е, че имаме много повече съдържание в този файл, отколкото в останалата част от нашето приложение и това е така, защото тук се провежда целият живот на нашето виждане, първият маршрут е началото на нашето приложение и не включват някаква по -голяма мистерия.
Вторият и третият маршрут са за консултация, където можем да търсим по идентификатор на продукта и в случай, че няма какво да върнем страница 404, ние също имаме функционалността да изброим всички налични продукти в нашия База данни.
Последният маршрут е този, който ни позволява чрез метода POST създаването на продукт и последващото му съхранение в База данни, за това ние създаваме екземпляр на нашия продуктов модел, където след това предаваме споменатия атрибут на обекта db и с неговите методи добавете Y ангажирам го добавяме към База данни.
Сега остава да тестваме нашето приложение е да добавим съдържанието, което ще влезе в нашата база данни, ако си спомним във файла views.py създаваме изглед, който получава данни чрез метода POST и той е този, който отговаря за вмъкването в него. За да добавим елементи, ще използваме модул Python Наречен заявки което ни позволява да изпращаме данни чрез POST, ако нямаме налични, просто трябва да ги инсталираме със следната команда:
заявки за инсталиране на pipВъв вторична конзола ще стартираме нашето приложение flasko така че сървърът да е включен и да може да изпраща заявките от Python. В нашата интерактивна конзола Python до които имаме достъп, като напишем думата python, трябва да направим следното:
requests.post ('http://127.0.0.1:5000/ create-product', data = {'name': 'product1', 'price': '50'})Това, което направихме, беше да изпратим заявка чрез POST към нашия маршрут, който добавя елементите към базата данни, параметрите се предават в речник Python който е много подобен на обект JSON.
Това трябва да ни даде код 200, което означава, че ние успешно сме успели в нашата заявка, можем да видим това на следното изображение:
Ако сега преминем към нашето приложение в изгледа на продуктите, ще видим как получаваме това, което току -що въведохме през конзолата:
Виждаме, че имаме списък във формат JSON с нашия продукт, който току -що добавихме, ако сега направим търсене по маршрута продукт / 1 ще видим, че също ще го получим:
Разбира се, това далеч не е нещо, което заслужава да бъде пуснато в производство, но ни помага да научим основите на моделите и постоянството на данните в рамките на Колба, най -интересното е, че тъй като не сме правили запитвания SQL директно, ако променим връзката на sqlite за един до MySQL например нашето приложение ще продължи да работи както обикновено.
С това завършихме този урок, вече знаем как да създаваме модели в КолбаВ допълнение, ние се научихме да манипулираме по основен, но много полезен начин ORM SQLA Алхимия, където тези компоненти са много важни, когато изграждаме много по -големи приложения, тъй като те ще ни позволят да постигнем по -сложни резултати с по -малко работа.