Flask 기반 웹 애플리케이션 탄생에 관한 네 번째 기사입니다. 이 기사에서는 주로 Flask와 mysql을 상호 연결하는 방법을 소개합니다. 관심 있는 친구는
1장의 구현 부분을 참조하세요. 로그인 기능을 부분 기능이라고 부르는 이유는 사용자 이름과 비밀번호를 고정된 값으로 쓰는 것이 절대 허용되지 않기 때문입니다. 전체 기능에는 최소한 등록, 로그인, 비밀번호 수정 등이 필요하며 이를 제공해야 합니다. a 이러한 값을 데이터베이스에 저장하는 기능.
현재 주류 데이터베이스는 관계형 데이터베이스와 NoSql 데이터베이스라는 두 가지 유형으로 나누어지며, 중소 규모 시스템의 경우 두 데이터베이스의 성능과 사용 편의성이 동일하며 둘 다 좋은 선택입니다. .
기본 구성
여기서는 SQLAlchemy 데이터베이스 프레임워크의 플라스크 통합 패키지, 즉 플라스크-SQLAlchemy를 사용하여 데이터베이스 작업을 수행합니다.
SQLAlchemy는 데이터베이스 작업을 단순화하는 매우 좋은 프레임워크로, 높은 수준의 ORM과 낮은 수준의 SQL 기능을 제공하므로 사용이 매우 편리합니다.
설치 방법은 이전 유형과 동일하거나 pip 명령:
pip3.6 install flask-sqlalchemy
설치가 완료된 후 기본 구성 부분을 수정하고 먼저 패키지를 가져옵니다.
from flask.ext.sqlalchemy import SQLAlchemy
그런 다음 링크 문자열을 구성합니다:
app.config["SQLALCHEMY_DATABASE_URI"]='mysql://root:1234@localhost/cblog'
요청이 완료된 후 변경 사항의 자동 커밋을 구성합니다:
app.config["SQLALCHEMY_COMMIT_ON_TEARDOWN"]=True
SQLAlchemy 인스턴스화:
db=SQLAlchemy(app)
모델 설정
설치가 완료된 후 계속해서 로그인 예제를 개선하고 default.py 파일에 사용자 모델(클래스) 및 역할 모델(연관 표시용)을 추가합니다
역할 클래스
class Role(db.Model): #需继承模型 __tablename__="roles" #db中表明,如果不设置,则会与class同的默认名 id=db.Column(db.Integer,primary_key=True) #SQLAlchemy要求必须有主键,一般命名为id即可 name=db.Column(db.String(50),unique=True) #表示name为字符串,不重复 users=db.relationship("User",backref='role') #关联user模型,并在user中添加反向引用(backref)
사용자 클래스
class User(db.Model): __tablename__="users" id=db.Column(db.Integer,primary_key=True) username=db.Column(db.String(50),unique=True,index=True) #此列带索引 password=db.Column(db.String(50)) role_id=db.Column(db.Integer,db.ForeignKey("roles.id")) #外键指向roles表中的id列
다음은 어떻게 해야 하는지 고려해야 합니다. 실행하기 편리해야 하고 로직 코드를 침범할 수 있는지 여부가 필요합니다. 예를 들어 db 상태를 확인하는 코드는 app.run에 매개변수로 전달됩니다. () 이때 셸이 유용합니다
구성 스크립트
Flask에서 명령줄 스크립트를 지원하려면 먼저 설치해야 합니다. 플라스크 스크립트 확장:
pip3.6 install flask-script
default.py의 코드 수정:
from flask.ext.script import Manager mamager=Manager(app) .... if __name__=='__main__': #app.run(debug=True) mamager.run()
수정 후 다시 실행:
python default.py
성공적으로 실행되지 않은 것을 발견했습니다. 그런데 프롬프트가 있었습니다:
각각 shell(실행 스크립트), runserver(서비스 시작) 및 help 뒤에 매개변수가 필요하다는 것을 알 수 있습니다
아래 서비스 시작:
python default.py runserver
서비스가 성공적으로 실행되었습니다
추가 데이터베이스 구성
그러나 이때 액세스할 때 사이트(127.0.0.1:5000)에서는 mysql 모듈이 없다는 500 오류가 나타납니다. 이유는 무엇입니까? 분명히 그 이유는 pip 명령을 사용하여 드라이버를 설치하기 때문입니다.
pip3.6 install MySQL-python
오류가 발견되었으며 표시되는 내용은 다음과 같습니다(여기서는 win 시스템만 해당):
프롬프트에 따라 C++ 도구 패키지를 설치하고 프롬프트의 다운로드 주소를 따르세요
landinghub.visualstudio.com/visual-cpp-build-tools
다운로드가 완료되면 exe 파일에 바로 들어가고,
을 설치하고 다시 시작하여 MySQL-python을 설치하는 것이 여전히 불가능하다는 것을 Baidu를 통해 확인한 결과 MySQLdb가 발견되었습니다. 라이브러리는 python2.7까지만 지원하고 더 이상 3.x를 지원하지 않습니다. 그러면 다른 방법을 사용해야 합니다. PyMySQL 라이브러리를 사용하세요:
pip3.6 install PyMySQL
그런 다음 default.py의 코드를 수정하고 두 줄을 추가합니다. :
import pymysql pymysql.install_as_MySQLdb()
소스 코드를 입력하고 다음 줄에 주의하세요.
sys.modules["MySQLdb"] = sys.modules["_mysql"] = sys.modules["pymysql"]
는 성공적으로 mysql을 사용하고 연결할 수 있습니다.
브라우저에 연결을 입력하고 사이트에 올바르게 입력하세요.
다음으로 쉘을 사용하여 데이터베이스 테이블을 생성하고 default.py의 루트 디렉터리를 입력합니다.
python default.py shell from default import db db.create_all()
이번에 오류가 보고되지 않으면, :
데이터베이스 마이그레이션
이때 문제가 발생합니다. 시간이 지나면 모델을 수정하면 DB에는 반영되지 않는데 수정하면 어떻게 해야 하나요? 현재로서는 매우 간단합니다.
db.drop_all() db.create_all()
하지만 이는 디버깅 중에만 사용됩니다. 이미 DB에 데이터가 있으면 이 시점에서는 확실히 견딜 수 없는 일입니다. 마이그레이션 플러그인 Migrate는 여전히 동일합니다.
pip3.6 install flask-migrate
이전과 마찬가지로 설치 후 구성을 위해 default.py 파일을 수정합니다.
from flask.ext.migrate import Migrate,MigrateCommand migrate=Migrate(app,db) #配置迁移 mamager.add_command("db",MigrateCommand) #配置迁移命令
그런 다음 init 명령을 사용하여 마이그레이션 웨어하우스를 초기화합니다.
python default.py db init
명령줄에 다음이 표시됩니다.
그런 다음 마이그레이션 디렉터리를 추가합니다.
은 마이그레이션 파일 초기화가 완료되었음을 의미합니다.
migrate框架提供了一些命令来进行迁移操作,分别为(使用default.py文件举例):
#根据差异创建迁移 python default.py db migrate -m "说明" #改动差异 python default.py db upgrade #取消差异改动 python default.py db downgrade
回到表单
接下来看看登录如何与数据库关联起来,修改login方法内的代码:
@app.route("/login",methods=["POST"]) def loginPost(): username=request.form.get("username","") password=request.form.get("password","") user=User.query.filter_by(username=username,password=password).first() #数据库查询 if user is not None: session["user"]=username return render_template("/index.html",name=username,site_name='myblog') else: flash("您输入的用户名或密码错误") return render_template("/login.html") #返回的仍为登录页
执行结果非常完美。
一些总结
下面是一些关于python和db相连的总结性的东西
数据类型
列选项
数据库操作
查询过滤器
经过这几章,登录功能已经基本完成,在下一章中将讲解用户注册的相关功能。
위 내용은 플라스크와 mysql(python)을 연결하는 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

在第一部分介绍了基本的Flask和IntellijIDEA集成、项目和虚拟环境的设置、依赖安装等方面的内容。接下来我们将继续探讨更多的Pythonweb应用程序开发技巧,构建更高效的工作环境:使用FlaskBlueprintsFlaskBlueprints允许您组织应用程序代码以便于管理和维护。Blueprint是一个Python模块,能够包

随着移动互联网和Web技术的迅速发展,越来越多的应用需要提供流畅、快速的用户体验。传统的多页面应用已经无法满足这些需求,而单页面应用(SPA)则成为了解决方案之一。那么,如何快速实现单页面应用呢?本文将介绍如何利用Flask和Vue.js来构建SPA。Flask是一个使用Python语言编写的轻量级Web应用框架,它的优点是灵活、易扩

一、日志输出到文件使用模块:logging可以生成自定义等级日志,可以输出日志到指定路径日志等级:debug(调试日志)=5){clearTimeout(time)//如果连续10次获取的都是空日志清除定时任务}return}if(data.log_type==2){//如果获取到新日志for(i=0;i

Flask-RESTful和Swagger:Pythonweb应用程序中构建RESTfulAPI的最佳实践(第二部分)在上一篇文章中,我们探讨了如何使用Flask-RESTful和Swagger来构建RESTfulAPI的最佳实践。我们介绍了Flask-RESTful框架的基础知识,并展示了如何使用Swagger来构建RESTfulAPI的文档。本

Flask-Security:在Pythonweb应用程序中添加用户身份验证和密码加密随着互联网的不断发展,越来越多的应用程序需要用户身份验证和密码加密来保护用户数据的安全性。而在Python语言中,有一个非常流行的Web框架——Flask。Flask-Security是基于Flask框架的一个扩展库,它可以帮助开发人员在Pythonweb应用程序中轻

Flask-Migrate:使用Python迁移数据库随着Web开发的不断发展,数据库的重要性越来越凸显出来。在开发过程中,我们需要对数据进行修改、迁移等操作。但是如果直接在数据库上进行修改,可能会带来不可预知的风险。这时,Flask-Migrate就应运而生。在本文中,我们将着重介绍Flask-Migrate的使用以及如何通过Python来迁移数据库。Fl

Flask和SublimeText集成:Pythonweb应用程序开发技巧(第六部分)SublimeText和Flask都是Pythonweb应用程序开发中的重要工具。然而,如何将二者集成起来,使得开发过程更加高效呢?本文将介绍一些SublimeText的插件和配置技巧,帮助你更方便地开发Flask应用程序。一、安装SublimeText插件F

Flask和Eclipse集成:Pythonweb应用程序开发技巧(第三部分)在前两篇文章中,我们介绍了如何将Flask与Eclipse集成,以及如何创建Flask应用程序。在本文中,我们将继续探讨如何开发和调试Flask应用程序,以及如何管理数据库。一、开发和调试Flask应用程序创建和运行Flask应用程序在Eclipse的ProjectExplo


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.
