Python Flask,資料庫,SQLAlchemy,模型類的定義,資料庫添加
SQLAlchemy是一個ORM框架。flask-sqlalchemy是一個簡化了SQLAlchemy操作的flask擴展。
安裝flask-sqlalchemy: pip install flask-sqlalchemy
安裝Mysql驅動: pip install MySQL-python # Python2中安裝MySQL-python,Python3中安裝 PyMySQL
demo.py(模型類的定義,資料庫的添加):
# coding:utf-8
from flask import Flask
from flask_sqlalchemy import SQLAlchemy # 導入
app = Flask(__name__)
# 通過類對象載入配置。 (配置資料庫)
class Config(object):
"""配置參數"""
# sqlalchemy的配置參數
SQLALCHEMY_DATABASE_URI = "mysql://root:密碼@127.0.0.1:3306/資料庫名"
# 設置sqlalchemy自動跟蹤資料庫中數據的修改 (修改資料庫數據後,對應的模型類對象會自動修改)(添加對象時,自動返回id給對象)
SQLALCHEMY_TRACK_MODIFICATIONS = True
app.config.from_object(Config) # 通過類對象載入配置參數
# 創建資料庫sqlalchemy工具對象
db = SQLAlchemy(app)
# 模型類 (繼承db.Model)
class Role(db.Model):
"""用戶角色表"""
__tablename__ = "tbl_roles"
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(32), unique=True)
users = db.relationship("User", backref="role") # 關聯屬性。關聯的所有用戶 (一對多)
# backref="role" 表示會在User模型類中自動創建關聯屬性role。
def __repr__(self):
"""定義之後,可以讓顯示對象的時候更直觀"""
return "Role object: name=%s" % self.name
# 表名的常見規範
# ihome -> ih_user 資料庫名縮寫_表名
# tbl_user tbl_表名
# 資料庫模型類
class User(db.Model):
"""用戶表"""
__tablename__ = "tbl_users" # 指明對應的資料庫表名
id = db.Column(db.Integer, primary_key=True) # 整型的主鍵,會默認設置為自增主鍵
name = db.Column(db.String(64), unique=True)
email = db.Column(db.String(128), unique=True)
password = db.Column(db.String(128))
role_id = db.Column(db.Integer, db.ForeignKey("tbl_roles.id")) # 外鍵 (一對多)
def __repr__(self):
return "User object: name=%s" % self.name
if __name__ == "__main__":
# 清除資料庫里的所有表 (不推薦使用)
db.drop_all()
# 創建所有的表 (根據模型類創建)
db.create_all()
# 創建對象
role1 = Role(name="admin")
# 通過會話將對象添加到資料庫中 (session是與資料庫的鏈接會話)
db.session.add(role1)
# 提交任務到資料庫中
db.session.commit() # SQLALCHEMY_TRACK_MODIFICATIONS設置為True後,會自動將id傳給對象role1
# db.session.rollback() # 回滾
role2 = Role(name="stuff")
db.session.add(role2)
db.session.commit()
us1 = User(name="wang", email="wang@163.com", password="123456", role_id=role1.id)
us2 = User(name="zhang", email="zhang@189.com", password="201512", role_id=role2.id)
us3 = User(name="chen", email="chen@126.com", password="987654", role_id=role2.id)
us4 = User(name="zhou", email="zhou@163.com", password="456789", role_id=role1.id)
# 一次添加多條數據
db.session.add_all([us1, us2, us3, us4])
db.session.commit()
---------------------
作者:houyanhua1
原文:https://blog.csdn.net/houyanhua1/article/details/85489479
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


※kibana 創建index pattern 索引模式慢無法創建成功 以及解決方案
※C++ 將序列前半部分為負整數,後半部分為正整數(數據分類)
TAG:程序員小新人學習 |