- from sqlalchemy.ext.declarative import declarative_base
- Base = declarative_base()
- from sqlalchemy import Column, Integer, String
- from sqlalchemy import create_engine
- from sqlalchemy.orm import sessionmaker
- class Contacts(Base):
- __tablename__ = 'contacts'
- name = Column(String(100), primary_key=True, nullable=False)
- phone_number = Column(String(32))
- # 連線到資料庫
- engine = create_engine("mysql+pymysql://root:password@localhost/test?charset=utf8")
- # 建立 transaction
- session = sessionmaker(engine)
- mySession = session()
- # 查詢
- result = mySession.query(Contacts).first()
- print(result.name)
- # 新增資料
- mySession.add_all([Contacts(name='Steven', phone_number='0963210089')])
- mySession.commit()
Flask 是和 Django 一樣,是 python 非常流行的 web framework ,上面是以 ORM 方式存取資料庫的程式,說明如下:
- 資料庫
- 安裝套件
PyMySQL 是連接資料庫的程式庫,SQLAlchemy 則是 ORM 程式庫。
- 程式說明
- line 2: 取得SQLAlchemy 的基礎類別
- line 7~10: 將程式對映到 table Contacts
- line 13: 連線到資料庫,連線字串前的 mysql+pymysql 指出了要使用 pymysql API 連線到 MySQL。
- line 16~17: session 就如 Java 中的 transaction
- line 20~21: 查詢並取得第一列的結果印出來
- line 24~25: 新增一筆資料
除了上面的方法,還可再安裝 Flask-SQLAlchemy package,程式如下:
- from flask import Flask
- from flask_sqlalchemy import SQLAlchemy
- from sqlalchemy import Column, String
- app = Flask(__name__)
- app.config['SQLALCHEMY_DATABASE_URI'] = "mysql+pymysql://root:password@localhost/test?charset=utf8"
- app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
- db = SQLAlchemy(app)
- class Contacts(db.Model):
- __tablename__ = 'contacts'
- name = Column(String(100), primary_key=True, nullable=False)
- phone_number = Column(String(32))
- item1 = Contacts.query.first()
- print(item1.name)
- print(item1.phone_number)
- 程式說明:
- line 6: Flask-SQLAlchemy 套件,資料庫的 URI 要放在 SQLALEMY_DATABASE_URI 程式設定裡。
- line 7: 這一行可以不需要,將 SQLALCHEMY_TRACK_MODIFICATIONS 設定為 False,可以讓警告訊息不要出現。
- line 8: 經由這個方式,db 這個類別可以使用 Flask-SQLAlchemy 提供的所有功能。
沒有留言:
張貼留言