ORM模型框架操作mysql數(shù)據(jù)庫(kù)的方法
【什么是ORM】
ORM 全稱(chēng)是(Object Relational Mapping)表示對(duì)象關(guān)系映射; 通俗理解可以理解為編程語(yǔ)言的虛擬數(shù)據(jù)庫(kù);
【理解ORM】
用戶(hù)地址信息數(shù)據(jù)庫(kù)表與對(duì)象的映射

【ORM的重要特性】
1.面向?qū)ο蟮木幊趟枷耄奖銛U(kuò)充
2. 少寫(xiě)(幾乎不寫(xiě))sql,提升開(kāi)發(fā)效率
3.支持多種類(lèi)型的數(shù)據(jù)庫(kù)(常用的mysql,pg,oracle等等),方便切換
4.ORM技術(shù)已經(jīng)相當(dāng)成熟,能解決絕大部分問(wèn)題
【ORM模型框架的選擇】

【SQLAlchemy ORM模型】
眾所周知,ORM框架模型可選擇的有很多,那么我們這邊選擇了SQLAlchemy 模型框架
pip install SQLAlchemy 安裝sql alchemy; 也可以指定版本號(hào)pip install SQLAlchemy ==1.4.17
import sqlalcherm; sqlalchemy.__version__; 驗(yàn)證是否安裝成功及版本號(hào);
【SQL Alchemy的使用】
一.開(kāi)始連接數(shù)據(jù)庫(kù)
二.聲明ORM模型基類(lèi)
三.實(shí)現(xiàn)ORM模型類(lèi)
四.同步數(shù)據(jù)庫(kù)表
開(kāi)始連接數(shù)據(jù)庫(kù)
- 延遲連接(Lazy Connecting)——只有在真正操作數(shù)據(jù)庫(kù)的時(shí)候,才會(huì)連接數(shù)據(jù)庫(kù)
- 連接代碼示例
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(默認(rèn)第一個(gè)參數(shù))——連接到哪種類(lèi)型的數(shù)據(jù)庫(kù),如:mysql;以哪種數(shù)據(jù)庫(kù)連接器(驅(qū)動(dòng))來(lái)連接數(shù)據(jù)庫(kù)
- echo——是否輸出logging(日志)信息,會(huì)把日志都打印出來(lái)
- future使用SQLAlchemy2.0 API風(fēng)格
SQLAlchemy配置

當(dāng)密碼中含有特殊字符時(shí),怎么處理?
話(huà)不多說(shuō),見(jiàn)下方代碼
from urllib.parse import quote_plus
如果密碼里有特殊字符時(shí),這邊需要導(dǎo)入一個(gè)類(lèi)來(lái)處理
password_formatted= quote.plus("mima%&&&mima")
把處理后的密碼粘貼到上方的sqlalchemy配置中,即可
聲明ORM模型基類(lèi)
from sqlalchemy.orm import declarative_base 聲明這個(gè)基類(lèi) Base = declarative_base()
【實(shí)現(xiàn)ORM模型類(lèi)】
如何實(shí)現(xiàn)? 我們需要寫(xiě)1個(gè)類(lèi)去繼承他
然后還需要設(shè)立1個(gè)屬性
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é)號(hào)')
stu_name = Column(String(16), nullable=False, comment='姓名')
created_at = Column(DateTime)
1.需要在同步之前保證 數(shù)據(jù)庫(kù)中有這個(gè)庫(kù),如果沒(méi)有,則需要手動(dòng)創(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對(duì)應(yīng)的模型字段類(lèi)型】


【代碼示例】
from sqlalchemy import create_engine
from sqlalchemy.orm import declarative_base
from sqlalchemy import Column, Integer, String, DateTime
# 第一步,準(zhǔn)備連接
engine = create_engine('mysql://root:@10.72.100.1:8081/test_database_1?charset=utf8',echo=True)
# 第二步,聲明ORM模型的基類(lèi)
Base = declarative_base()
# 第三步,實(shí)現(xiàn)ORM模型類(lèi)
class Student(Base):
"""學(xué)生信息表"""
__tablename__ = 'student'
id = Column(Integer, name='id', primary_key=True)
stu_no = Column(Integer, nullable=False, comment='學(xué)號(hào)')
stu_name = Column(String(16), nullable=False, comment='姓名')
created_at = Column(DateTime)
#第四步 同步數(shù)據(jù)庫(kù)表
def create_table()
"""同步數(shù)據(jù)庫(kù)表"""
# 新建表
Base.metadata.create_all(bind=engine)
# 刪除表
Base.metadata.drop_all(bind=engine)
到此這篇關(guān)于ORM模型框架操作mysql數(shù)據(jù)庫(kù)的方法的文章就介紹到這了,更多相關(guān)ORM模型框架內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信