python-Flask_SQLAlchemy(1)

2712 ワード

データベースSQLAlchemy
[TOC]
SQLAlchemy紹介
  • flashk_sqlalchemyはORMフレームです.
  • ORM(Object Relationsip Mapping):モデル関係マップ、リレーショナルデータベースのテーブル構造をオブジェクトにマッピングする
  • ORMの利点:
  • データアクセスの詳細を隠し、開発効率を高める
  • 構造データ構造が簡単になりました.
  • ORMの欠点:
  • 実行効率を低下させ、学習コストを増加させる.
  • 複雑なクエリができませんでした.
  • 接続と初期化の設定
  • config.pyファイルにプロファイル情報を追加する
  • #            
    # dialect+driver://username:password@host:port/database
    DIALECT = 'mysql'
    DRIVER = 'pymysql'
    USERNAME = 'Jyang'
    PASSWORD = 'yj19930621+-*/'
    HOST = '127.0.0.1'
    PORT = '3306'
    DATABASE = 'jsql'
    
    SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(
        DIALECT, DRIVER, USERNAME, PASSWORD, HOST, PORT, DATABASE)
    
    SQLALCHEMY_TRACK_MODIFICATIONS = False      #      
    
  • 導入用flashk_sqlalchemyのSQLAlchemyを初期化し、プロファイル
  • を導入する.
    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    import config
    
    app = Flask(__name__)      
    app.config.from_object(config)      #      
    db = SQLAlchemy(app)                #   
    
    db.create_all() #          (   ,         ,                )
    
    実例
    config.py
    # encoding: utf-8
    DEBUG = True 
    
    DIALECT = 'mysql'
    DRIVER = 'pymysql'
    USERNAME = 'Jyang'
    PASSWORD = 'yj19930621+-*/'
    HOST = '127.0.0.1'
    PORT = '3306'
    DATABASE = 'jsql'
    
    SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(
        DIALECT, DRIVER, USERNAME, PASSWORD, HOST, PORT, DATABASE)
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    
    main.py
    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    import config
    
    app = Flask(__name__)       #      
    app.config.from_object(config)
    db = SQLAlchemy(app)
    
    class User(db.Model):
        __tablename__ = 'user'
        id = db.Column(db.Integer, primary_key= True, autoincrement = True) 
        username = db.Column(db.String(100), nullable = False)
    
    #      
    class Article(db.Model):    #      db.Model
        #db.Column       ,primary_key  ,autoincrement  ,nullable   (   True)
        __tablename__ = 'article'
        id = db.Column(db.Integer, primary_key= True, autoincrement = True) 
        title = db.Column(db.String(100),nullable = False)
        content = db.Column(db.Text, nullable = False)
        author_id = db.Column(db.Integer,db.ForeignKey('user.id'))#  user  id  
        
        #    ,'User'     
        author = db.relationship('User',backref=db.backref('article'))
    
    db.create_all() 
    
    @app.route('/')
    def hello_world():
        return "hello world"
    
    if __name__ == '__main__':
        app.run()