91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在flask框架中配置mysql數據庫

發布時間:2021-04-13 16:07:05 來源:億速云 閱讀:193 作者:Leah 欄目:開發技術

怎么在flask框架中配置mysql數據庫?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

安裝pymysql:

pip install pymysql

在網上的好多資料都給的是使用sqlite的例子,由于很不喜歡所以今天分享一下flask-sqlalchemy操作mysql的方法.

以前習慣使用sqlalchemy,后來發現使用flask-sqlchemy還是要簡單一些(起碼省去了好多模塊和類的導入,create_engine,sessionmaker,declarative。。。)不過flask官方的例子用的是sqlchemy,去官網, flask-sqlalchemy官方文檔

這里寫一個簡單的flask web程序,來說明flask-sqlalchemy如何驅動msyql數據庫.為了偷懶,這個例子以上一篇博文flask藍圖的使用為基礎.

首先看一下程序結構:

相比上一節只多了兩個文件,create_db.py,models.py

怎么在flask框架中配置mysql數據庫

1.建立mysql和app的連接

在config.py中加入以下兩項配置:

SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:xxxxx@localhost:3306/test?charset=utf8'
SQLALCHEMY_TRACK_MODIFICATIONS = True

如此在app/__init__.py中加入

app.config.from_object('config')
db = SQLAlchemy(app)

就可以完成app和數據的關聯,并生成一個可以操作app數據庫的SQLAlchemy實例db

完整的app/__init__.py代碼如下:

from flask import Flask, url_for, request, redirect, render_template
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config.from_object('config')
db = SQLAlchemy(app)
from app import models,views

2.創建app/models.py模塊

上代碼

from app import db #db是在app/__init__.py生成的關聯后的SQLAlchemy實例

class User(db.Model):
 __tablename__ = 'users'
 id = db.Column(db.Integer, primary_key=True)
 username = db.Column(db.String(80), unique=True)
 email = db.Column(db.String(320), unique=True)
 password = db.Column(db.String(32), nullable=False)
 def __repr__(self):
  return '<User %r>' % self.username
class Admin(db.Model):
 __tablename__ = 'admins'
 id = db.Column(db.Integer, primary_key=True)
 username = db.Column(db.String(80), unique=True)
 email = db.Column(db.String(320), unique=True)
 password = db.Column(db.String(32), nullable=False)
 def __repr__(self):
  return '<User %r>' % self.username

3.創建create_db.py,表結構設計完成后執行python create_db.py即可完成表的創建,如下圖

#app/create_db.py

from app import db
db.create_all()

怎么在flask框架中配置mysql數據庫

4.表已經創建完成了,接下來是我們的業務邏輯使用表的時候了

分別在user和admin藍圖中增加一個add用戶的業務

#app/user.py

from flask import Blueprint, render_template, redirect,request
from app import db
from .models import User
user = Blueprint('user',__name__)
@user.route('/index')
def index():
 return render_template('user/index.html')
@user.route('/add/',methods=['GET','POST'])
def add():
 if request.method == 'POST':
  p_user = request.form.get('username',None)
  p_email = request.form.get('email',None)
  p_password = request.form.get('password',None)
  if not p_user or not p_email or not p_password:
   return 'input error'
  newobj = User(username=p_user, email=p_email, password=p_password)
  db.session.add(newobj)
  db.session.commit()
  users = User.query.all()
  return render_template('user/add.html',users=users)
 users = User.query.all()
 return render_template('user/add.html',users=users)
@user.route('/show')
def show():
 return 'user_show'

#app/admin.py

#admin.py
from flask import Blueprint,render_template, request, redirect
from app import db
from .models import Admin
admin = Blueprint('admin',__name__)
@admin.route('/index')
def index():
 return render_template('admin/index.html')
@admin.route('/add/',methods=['POST','GET'])
def add():
 if request.method == 'POST':
  p_admin = request.form.get('username',None)
  p_email = request.form.get('email',None)
  p_password = request.form.get('password',None)
  if not p_admin or not p_email or not p_password:
   return 'input error'
  newobj = Admin(username=p_admin, email=p_email, password=p_password)
  db.session.add(newobj)
  db.session.commit()
  admins = Admin.query.all()
  return render_template('admin/add.html',admins=admins)
 admins = Admin.query.all()
 return render_template('admin/add.html',admins=admins)
@admin.route('/show')
def show():
 return 'admin_show'

#app/templates/admin/add.html

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>AdminsAdd</title>
</head>
<body>
<form action="/admin/add/" method="POST">
 user:<input type="text" name="username" />
 email:<input type="text" name="email" />
 pwd:<input type="password" name="password" />
 <input type="submit" value="add" />
</form>
{% if admins %}
<table border="1px">
 <tr>
  <th>UserName</th>
  <th>Email</th>
 </tr>
 {% for u in admins %}
  <tr>
   <td>{{u.username}}</td>
   <td>{{u.email}}</td>
  </tr>
 {% endfor %}
</table>
{% endif %}
</body>
</html>

#app/templates/user/add.html

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>UserAdd</title>
</head>
<body>
<form action="/user/add/" method="POST">
 user:<input type="text" name="username" />
 email:<input type="text" name="email" />
 pwd:<input type="password" name="password" />
 <input type="submit" value="add" />
</form>
{% if users %}
<table border="1px">
 <tr>
  <th>UserName</th>
  <th>Email</th>
 </tr>
 {% for u in users %}
  <tr>
   <td>{{u.username}}</td>
   <td>{{u.email}}</td>
  </tr>
 {% endfor %}
</table>
{% endif %}
</body>
</html>

#app/views.py

from app import app
from .admin import admin
from .user import user
app.register_blueprint(admin,url_prefix='/admin')
app.register_blueprint(user, url_prefix='/user')

#run.py

from app import app
app.run()

到這里也就結束了,這樣這個例子就結合了藍圖和flask-sqlalchemy.本例中只使用了db.session.add(),其它的還有db.session.delete()...

看一下效果:

localhost:5000/user/add

怎么在flask框架中配置mysql數據庫

localhost:5000/admin/add

怎么在flask框架中配置mysql數據庫

怎么在flask框架中配置mysql數據庫

關于怎么在flask框架中配置mysql數據庫問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

建昌县| 恩平市| 军事| 开远市| 澄城县| 宜君县| 日土县| 广东省| 同德县| 宜宾市| 南和县| 谷城县| 德昌县| 时尚| 梅河口市| 炉霍县| 庆阳市| 大埔区| 泊头市| 大同县| 文安县| 靖宇县| 巴彦淖尔市| 金川县| 原阳县| 祁门县| 土默特右旗| 榆社县| 黄陵县| 平潭县| 长治市| 宝鸡市| 繁昌县| 比如县| 遂川县| 河北省| 东兰县| 襄汾县| 齐河县| 紫阳县| 七台河市|