1. 程式人生 > >flask框架操作MySQL資料庫

flask框架操作MySQL資料庫

前言

經測試,id主鍵預設自動增長,Stringl型別對應MySQL資料庫中的varchar型別,外來鍵預設沒有觸發方式。
設定資料庫編碼為uft8,則預設編碼都為utf8。

示例

# -*- coding:utf-8 -*-


from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)


class Config(object):
	"""配置引數"""
	# sqlalchemy的配置引數
	# 資料庫型別: mysql
	# 使用者名稱: root
	# 密碼: 123
	# 地址: 127.0.0.1
	# 埠: 3306
	# 資料庫: test2
	SQLALCHEMY_DATABASE_URI = "mysql://root:
[email protected]
:3306/test2" # 設定sqlalchemy自動跟蹤資料庫 SQLALCHEMY_TRACE_MODIFICATIONS = True app.config.from_object(Config) #新增配置 db = SQLAlchemy(app) #初始化資料庫(連線等操作) # 建立資料庫模型類 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") # 非資料庫中的欄位,方便查詢 def __repr__(self): return "Role Object:name= %s" % self.name class User(db.Model): #使用者 __tablename__ = "tbl_users" # 表名 id = db.Column(db.Integer, primary_key=True) # 主鍵 name = db.Column(db.String(64)) email = db.Column(db.String(64), 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") # 新增資料 role2 = Role(name="stuff") db.session.add_all([role1, role2]) db.session.commit() user1 = User(name="a", email="
[email protected]
", password="abc", role_id=role1.id) user2 = User(name="b", email="[email protected]", password="abc", role_id=role2.id) user3 = User(name="c", email="[email protected]", password="abc", role_id=role2.id) user4 = User(name="d", email="[email protected]", password="abc", role_id=role1.id) db.session.add_all([user1, user2, user3, user4]) db.session.commit() # 在終端操作資料庫 # from dbdemo import * # 查詢 # r=Role.query.all() # r[0],r[1] # r[0].name,r[1].name # u=User.query.get(3) # u.name,u.email,u.role_id # u=db.session.query(User).get(2) # u.name # user=User.query.get(1) # user # 更新方式1 # user.name="xm" # db.session.add(user) # db.session.commit() # 更新方式2 # User.query.filter_by(name="c").update({"name":"python","email":"
[email protected]
"}) # db.session.commit() # 刪除 # user=User.query.get(2) # db.session.delete(user) # db.session.commit()

測試結果

資料庫模型圖

1

資料庫表結構(部分)

2
3
4
5