ORM操作mysql

xinhua發表於2021-07-24

【什麼是ORM】

ORM 全稱是(Object Relational Mapping)表示物件關係對映; 通俗理解可以理解為程式語言的虛擬資料庫;

【理解ORM】

使用者地址資訊資料庫表與物件的對映

 

 

 

 【ORM的重要特性】

1.物件導向的程式設計思想,方便擴充

2. 少寫(幾乎不寫)sql,提升開發效率

3.支援多種型別的資料庫(常用的mysql,pg,oracle等等),方便切換

4.ORM技術已經相當成熟,能解決絕大部分問題

【ORM模型框架的選擇】

 

【SQLAlchemy ORM模型】

眾所周知,ORM框架模型可選擇的有很多,那麼我們這邊選擇了SQLAlchemy 模型框架

 

pip install SQLAlchemy  安裝sql alchemy; 也可以指定版本號pip install SQLAlchemy ==1.4.17

import sqlalcherm;  sqlalchemy.__version__;  驗證是否安裝成功及版本號;

【SQL Alchemy的使用】

  • 一.開始連線資料庫
  • 二.宣告ORM模型基類
  • 三.實現ORM模型類
  • 四.同步資料庫表

【開始連線資料庫】

  • 延遲連線(Lazy Connecting)——只有在真正運算元據庫的時候,才會連線資料庫
  • 連線程式碼示例
from sqlalchemy import  create_engine

create_engine("mysql://root:@127.0.0.1:3306/school?charset=utf8,echo=True,future=True")

【create_engine引數解釋】

  1. url(預設第一個引數)——連線到哪種型別的資料庫,如:mysql;以哪種資料庫聯結器(驅動)來連線資料庫
  2. echo——是否輸出logging(日誌)資訊,會把日誌都列印出來
  3. future使用SQLAlchemy2.0 API風格

【SQLAlchemy配置】

 

 

 當密碼中含有特殊字元時,怎麼處理?

話不多說,見下方程式碼

from urllib.parse import quote_plus
如果密碼裡有特殊字元時,這邊需要匯入一個類來處理


password_formatted= quote.plus("mima%&&&mima")
把處理後的密碼貼上到上方的sqlalchemy配置中,即可

 【宣告ORM模型基類】

from sqlalchemy.orm import declarative_base

宣告這個基類
Base = declarative_base()

 

【實現ORM模型類】

如何實現? 我們需要寫1個類去繼承他

然後還需要設立1個屬性

from sqlalchemy import Column, Integer, String, DateTime


class Student(Base):
    """學生資訊表"""
    __tablename__ = 'student'
    id = Column(Integer, name='id', primary_key=True)
    stu_no = Column(Integer, nullable=False, comment='學號')
    stu_name = Column(String(16), nullable=False, comment='姓名')
    created_at = Column(DateTime)

 【同步資料庫表】

1.需要在同步之前保證 資料庫中有這個庫,如果沒有,則需要手動建立

2 建立表,刪除表

from  orm_connect_example import Base ,engine

# 建立表
Base.metadata.create_all(engine)

#刪除表
Base.metadata.drop_all(engine)

【ORM對應的模型欄位型別】

 

 

 

 

 【程式碼示例】

from sqlalchemy import create_engine
from sqlalchemy.orm import declarative_base
from sqlalchemy import Column, Integer, String, DateTime

# 第一步,準備連線
engine = create_engine('mysql://root:@10.72.100.1:8081/test_database_1?charset=utf8',echo=True)

# 第二步,宣告ORM模型的基類
Base = declarative_base()


# 第三步,實現ORM模型類
class Student(Base):
    """學生資訊表"""
    __tablename__ = 'student'
    id = Column(Integer, name='id', primary_key=True)
    stu_no = Column(Integer, nullable=False, comment='學號')
    stu_name = Column(String(16), nullable=False, comment='姓名')
    created_at = Column(DateTime)
#第四步 同步資料庫表
def create_table()
    """同步資料庫表"""
    # 新建表
    Base.metadata.create_all(bind=engine)
    # 刪除表
    Base.metadata.drop_all(bind=engine)

 

相關文章