SQLAlchemy Script
SQLAlchemy:
1.由于sqlalchemy中沒有提供choice方法,所以借助SQLAlchemy-Utils組件提供的choice方法
?from sqlalchemy_utils import ChoiceType
?Base = declarative_base()
?class Xuan(Base):
???? __tablename__ = 'xuan'
???? types_choices = (
???????? (1,'歐美'),
???????? (2,'日韓'),
???????? (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放進去了
??????? 3、導入models的類
??????? 4、導入的類中繼承了db.model,其實本質上還是繼承了Base類
?????? 5、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
轉載于:https://www.cnblogs.com/mihon/p/8981031.html
總結
以上是生活随笔為你收集整理的SQLAlchemy Script的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Microsoft Visio 软件的使
- 下一篇: MATLAB表示非线性系统,matlab