ORM模型框架操作mysql數(shù)據(jù)庫的方法
【什么是ORM】
ORM 全稱是(Object Relational Mapping)表示對象關(guān)系映射; 通俗理解可以理解為編程語言的虛擬數(shù)據(jù)庫;
【理解ORM】
用戶地址信息數(shù)據(jù)庫表與對象的映射
【ORM的重要特性】
1.面向?qū)ο蟮木幊趟枷耄奖銛U充
2. 少寫(幾乎不寫)sql,提升開發(fā)效率
3.支持多種類型的數(shù)據(jù)庫(常用的mysql,pg,oracle等等),方便切換
4.ORM技術(shù)已經(jīng)相當(dāng)成熟,能解決絕大部分問題
【ORM模型框架的選擇】
【SQLAlchemy ORM模型】
眾所周知,ORM框架模型可選擇的有很多,那么我們這邊選擇了SQLAlchemy 模型框架
pip install SQLAlchemy 安裝sql alchemy; 也可以指定版本號pip install SQLAlchemy ==1.4.17
import sqlalcherm; sqlalchemy.__version__; 驗證是否安裝成功及版本號;
【SQL Alchemy的使用】
一.開始連接數(shù)據(jù)庫
二.聲明ORM模型基類
三.實現(xiàn)ORM模型類
四.同步數(shù)據(jù)庫表
開始連接數(shù)據(jù)庫
- 延遲連接(Lazy Connecting)——只有在真正操作數(shù)據(jù)庫的時候,才會連接數(shù)據(jù)庫
- 連接代碼示例
from sqlalchemy import create_engine create_engine("mysql://root:@127.0.0.1:3306/school?charset=utf8,echo=True,future=True")
create_engine 參數(shù)解釋
- url(默認第一個參數(shù))——連接到哪種類型的數(shù)據(jù)庫,如:mysql;以哪種數(shù)據(jù)庫連接器(驅(qū)動)來連接數(shù)據(jù)庫
- echo——是否輸出logging(日志)信息,會把日志都打印出來
- future使用SQLAlchemy2.0 API風(fēng)格
SQLAlchemy配置
當(dāng)密碼中含有特殊字符時,怎么處理?
話不多說,見下方代碼
from urllib.parse import quote_plus 如果密碼里有特殊字符時,這邊需要導(dǎo)入一個類來處理 password_formatted= quote.plus("mima%&&&mima") 把處理后的密碼粘貼到上方的sqlalchemy配置中,即可
聲明ORM模型基類
from sqlalchemy.orm import declarative_base 聲明這個基類 Base = declarative_base()
【實現(xiàn)ORM模型類】
如何實現(xiàn)? 我們需要寫1個類去繼承他
然后還需要設(shè)立1個屬性
from sqlalchemy import Column, Integer, String, DateTime class Student(Base): """學(xué)生信息表""" __tablename__ = 'student' id = Column(Integer, name='id', primary_key=True) stu_no = Column(Integer, nullable=False, comment='學(xué)號') stu_name = Column(String(16), nullable=False, comment='姓名') created_at = Column(DateTime)
1.需要在同步之前保證 數(shù)據(jù)庫中有這個庫,如果沒有,則需要手動創(chuàng)建
2 創(chuàng)建表,刪除表
from orm_connect_example import Base ,engine # 創(chuàng)建表 Base.metadata.create_all(engine) #刪除表 Base.metadata.drop_all(engine)
【ORM對應(yīng)的模型字段類型】
【代碼示例】
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() # 第三步,實現(xiàn)ORM模型類 class Student(Base): """學(xué)生信息表""" __tablename__ = 'student' id = Column(Integer, name='id', primary_key=True) stu_no = Column(Integer, nullable=False, comment='學(xué)號') stu_name = Column(String(16), nullable=False, comment='姓名') created_at = Column(DateTime) #第四步 同步數(shù)據(jù)庫表 def create_table() """同步數(shù)據(jù)庫表""" # 新建表 Base.metadata.create_all(bind=engine) # 刪除表 Base.metadata.drop_all(bind=engine)
到此這篇關(guān)于ORM模型框架操作mysql數(shù)據(jù)庫的方法的文章就介紹到這了,更多相關(guān)ORM模型框架內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解mysql 獲取某個時間段每一天、每一個小時的統(tǒng)計數(shù)據(jù)
這篇文章主要介紹了mysql 獲取某個時間段每一天、每一個小時的統(tǒng)計數(shù)據(jù),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04MySQL too many connections錯誤的原因及解決
這篇文章主要介紹了MySQL too many connections錯誤的原因及解決,幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下2021-03-03MySQL 配置文件 my.cnf / my.ini 區(qū)別解析
充分理解 MySQL 配置文件中各個變量的意義對我們有針對性的優(yōu)化 MySQL 數(shù)據(jù)庫性能有非常大的意義,這篇文章主要介紹了MySQL 配置文件 my.cnf / my.ini 區(qū)別,需要的朋友可以參考下2022-11-11node連接mysql數(shù)據(jù)庫遇到的問題和解決方案
這篇文章主要介紹了node連接mysql數(shù)據(jù)庫遇到的問題和解決方案,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10