flask mysql sqlalchemy教程


1.建立models_base文件

連接數據庫

import logging
import ast
import simplejson as json
import time
from flask_sqlalchemy import SQLAlchemy
from flask import Flask

from commons.entity import rds_mongo

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:1234@localhost:3306/flask_demo'

app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
db = SQLAlchemy(app)

logger = logging.getLogger("platform")

 

2.建立數據庫

class UserInfo(DynamicDocument):
    # Columns

    __tablename__ = 'userinfo'

    uid = Column(String(64), primary_key=True)
    nick_name = Column(String(64))
    sex = Column(String(64))
    email = Column(String(64))
    device_id = Column(String(100))
    imei = Column(String(100))
    coin_balance = Column(Integer())  # 金幣余額
    real_name = Column(String(100))  # 真名
    id_card = Column(String(100))  # 身份證號
    create_time = Column(String(100))  # 創建時間
    last_login_time = Column(String(100), nullable=True)  # 創建時間
    cash = Column(Float())  # # 現金賬戶
    other_column = Column(Text(), nullable=True)

    def __init__(self, coin_balance=0, lx_login=1, lj_login=1, *args, **kwargs):
        super(UserInfo, self).__init__(*args, **kwargs)
        self.uid = uid_value_decorator(random.randint(0, 9))
        self.coin_balance = coin_balance
        self.lx_login = lx_login  # 連續登陸的天數
        self.lj_login = lj_login  # 累計登陸的天數

 

3.常用字段類型

常用列選項

  

關系選項

 

 

4.基本查詢

# 查詢所有
def checkAll():
    user =UserInfo.query.all()
    print(user)


# 修改數據
def update(name, pwd):
    user = User.query.filter(User.name == name).first()
    if user is not None:
        user.thrust = pwd
        db.session.commit()
        print('修改 用戶 %s ,密碼為:%s' % (name, pwd))
    else:
        print('用戶不存在')


# 刪除數據
def delete(name, pwd):
    user = User.query.filter(User.name == name, User.thrust == pwd).first()
    if user is not None:
        db.session.delete(user)
        db.session.commit()
        print('刪除 用戶 %s ,密碼為:%s' % (name, pwd))
    else:
        print('用戶不存在,或密碼不正確')

from models  import User
#添加數據
user=UserInfo(1,'xiaoxiao','ss123')
user.save()
#按條件查詢
result=User.query.filter(User.id>5).all()
result=User.query.filter(User.username=='xiaoxiao').all() #返回結果為一個列表,列表內元素為User對象,all()為返回查詢的所有結果,first()返回查詢結果中的第一個
result=User.query.filter(User.username.startswith('x'))  #starstwith以什么開頭
#獲取查詢結果的總數量
count=User.query.filter(User.id>5).count()
#獲取查詢結果中指定的數據
result=User.query.filter(User.id>5).all()[1:3]  #查詢結果以列表返回,所以可以根據列表的切片操作來獲取對應數據

#多條件查詢
#sqlalchemy內置了多條件查詢方法 : and_(), or()_ ,not_()
result=User.query.filter(and_(User.id>5,User.username.startswith('x'))) #查詢id大於5並且用戶名以x開頭的
result=User.query.filter(or_(User.id>5,User.username.startswith('x'))) #查詢id大於5或者用戶名以x開頭的
result=User.query.filter(and_(User.username.startswith('x'))) #查詢用戶名不是以x開頭的


#修改
result=User.query.filter(User.username=='xiaoxiao').all()[0]
result.password='000000'
db.session.commit()

#刪除
result=User.query.filter(User.username=='xiaoxiao').all()[0]
db.session.delete(result)
db.session.commit()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM