SQLAlchemy Script

SQLAlchemy:python

1.因爲sqlalchemy中沒有提供choice方法,因此藉助SQLAlchemy-Utils組件提供的choice方法mysql

 from sqlalchemy_utils import ChoiceTypesql

 Base = declarative_base()數據庫

 class Xuan(Base):flask

     __tablename__ = 'xuan'安全

     types_choices = (session

         (1,'歐美'),app

         (2,'日韓'),ide

         (3,'老男孩'),函數

     )

     id = Column(Integer,primary_key=True,autoincrement=True)

     name = Column(String(64))

     types = Column(ChoiceType(types_choices,Integer()))

 

     __table_args__ = {

         'mysql_engine':'Innodb',

         'mysql_charset':'utf8',

     }

    

2.scoped_session:

 from sqlalchemy.orm import sessionmaker

 from sqlalchemy import create_engine

 from sqlalchemy.orm import scoped_session

 SessionFactory = sessionmaker(bind=engine)

 # 方式一:因爲沒法提供線程共享功能,全部在開發時要注意,在每一個線程中本身建立 session。

 #         from sqlalchemy.orm.session import Session

 #         本身具備操做數據庫的:'close', 'commit', 'connection', 'delete', 'execute', 'expire',.....

 session = SessionFactory()

 # print('原生session',session)

 # 操做

 session.close()

 # 方式二:支持線程安全,爲每一個線程建立一個session

 #               - threading.Local

 #               - 惟一標識

 # ScopedSession對象

 #       self.registry(), 加括號 建立session

 #       self.registry(), 加括號 建立session

 #       self.registry(), 加括號 建立session

 from greenlet import getcurrent as get_ident

 session = scoped_session(SessionFactory,get_ident)

 # session.add

 # 操做

 session.remove()

3.Flask-SQLAlchemy Flask-Migrate

Flask-SQLAlchemy:吧Flask和SQLAlchemy結合在一塊兒,粘合劑

    在__init__.py 文件中

        1 引入Flask-SQLAlchemy    中的SQLAlchemy,實例化了一個SQLAlchemy對象

        2 註冊Flask-SQLAlchemy:

            - 有兩種方式

                方式一: 在函數裏面,SQLAlchemy(app)  #若是想在其餘地方使用這種方式就很差使了

                方式二: 在全局:

                    db = SQLAlchemy(),

                    在函數裏面 db.init_app(app)  #調用init_app方法吧app放進去了

        三、導入models的類

        四、導入的類中繼承了db.model,其實本質上仍是繼承了Base類

       五、manage.py 建立數據庫表,能夠經過命令來建立。藉助Flask-Migrate組件來完成

Flask-Migrate:

    -舊5 被斃掉了:在manage.py裏面導入db,之後執行db.create_all()建立表,之後執行drop_all()刪除表

      這樣很差,咱們能夠和Flask-Migrate結合起來用

    -新5:Flask-Migrate

        - 安裝組件:pip install Flask-Migrate

        - 5.1 導入   

            from flask_migrate import Migrate, MigrateCommand

            from app import db, app

        - 5.2 migrate = Migrate(app,db) #建立實例

        - 5.3 建立命令

            manager.add_command("db",MigrateCommand)

        - 5.4 執行命令

            python manage.py db init  #只執行第一次

            python manage.py db migrate

            python manage.py db upgrade

    在執行命令以前,得先鏈接數據庫,他纔會知道吧表放在那裏,

from flask_sqlalchemy import SQLAlchemy

from flask import FLask

db = SQLAlchemy()

def create_app():

    app = Flask(__name__)

    db.init_app(app)

    return app

全部用過的組件

 Flask

 鏈接數據庫的兩種操做

     要麼DBUtils:用於執行原生SQL的

         用本身的util裏面的sqlhelper來完成

     要麼SQLAlchemy:遵循他本身的語法來連接

         方式一:SQLAlchemy(app)這種方式有侷限性,若是我在其餘地方也得用到呢?能夠吧它寫到全局

         方式二:優勢,

             實例化一下:db = SQLAlchemy()

             註冊:

                 在settings裏面配置一下數據庫連接方式

                     SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:123@47.93.4.198:3306/s6?charset=utf8"

                     SQLALCHEMY_POOL_SIZE = 2

                     SQLALCHEMY_POOL_TIMEOUT = 30

                     SQLALCHEMY_POOL_RECYCLE = -1

                 Flask-SQLAlchemy: db.init_app(app)       

 Flask-Session  #用於吧session保存在其餘地方

 Flask-Script  #生成命令

 Flask-Migrate   #數據庫遷移

 Flask-SQLAlchemy  #將Flask和SQLAlchemy很好的結合在一塊兒

     #本質、:每次操做數據庫就會自動建立一個session鏈接,完了自動關閉

 Blinker  #信號

 Wtforms  #FORM組件

 用到的組件和版本

     pip3 freeze  #獲取環境中全部安裝的模塊

     pip3 freeze > a.txt

     pip3 freeze > requirements.txt

     #pip3 install pipreqs  #幫你找到當前程序的全部模塊,而且自動生成 requirements.txt文件,寫入內容

     pipreqs ./  #根目錄

    

     之後別人給你一個程序,告知你一個文件夾須要安裝的組件:requirements.txt

          進入程序目錄:

             pip install -r requirements.txt #就會把設計到的全部的組件就會裝上

    

     結構:

         app

             static

             templates

             views

             __init__.py

             models.py

相關文章
相關標籤/搜索