利用sqlalchemy(ORM框架)連接操作mysql_mysql


一、什么是ORM框架

object relational mapping,也就是對象映射關系程序,主要作用是用面向對象的形式轉換原生sql,避免直接寫死sql語言在代碼當中

優點:隱藏了數據訪問細節,通用數據庫交互,ORM的核心,使得交互更賤簡單異性,適用多種數據庫類型。

缺點:進行sql轉換,意味着映射和關聯管理,會影響性能,但是現在各種ORM礦化適用lazyload,cache等有效減輕這塊,效果明顯。

 

二、最有名的ORM框架:SQLalchemy

1、不同的數據庫類型和模塊

根據配置文件的不同調用不同的數據庫API,實現對數據庫的操作

 

2、sqlalchemy操作mysql表

(1)創建表

import sqlalchemy
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,Integer,String

#創建引擎
engine=create_engine("mysql+pymysql://root:thinker@localhost/testdb?charset=utf8",echo=True) #echo=True執行時顯示對應的sql

#生成orm基類
Base=declarative_base()

#表類
class User(Base):
__tablename__='user' #表名
id=Column(Integer,primary_key=True)
name=Column(String(32),nullable=False)
password=Column(String(64))
  def __repr__(self):  #表現打印格式
  return "<%s,%s>"%(self.name,self.password)

#創建表結構
Base.metadata.create_all(engine)

(2)創建數據
注:這里需要將(1)中的表結構和engine一起帶上,會需要用到
from sqlalchemy.orm import sessionmaker

#創建會話連接
Session=sessionmaker(bind=engine) #創建與數據庫的會話,返回的是類
session=Session() #類的實例化

user_obj=User(name='chen',password='123') #生成你要創建的對象
session.add(user_obj) #將要創建的數據對象添加到session中,一會commit統一創建
session.commit() #提交創建

 (3)查詢數據

user_obj=session.query(User).filter(User.name=="chen").all() #all取出所有
user_obj=session.query(User).filter(User.name=="chen").first() #取出第一個
print(user_obj) #返回列表

(4)修改數據

先查詢出來,然后直接賦值

user_obj=session.query(User).filter(User.name=="chen").first()
user_obj.name='fortest'
user_obj.password='fortest'
session.commit()

(5)刪除數據
先查詢出來,然后直接刪除
user_objs=session.query(User).filter(User.name=="chen").all()
for i in user_objs:
session.delete(i)
session.commit()

(6)分組與統計
統計:
user_objs=session.query(User).filter(User.name=='chen').count()
print(user_objs)
分組:
group_by

 

 

(7)連接查詢

 

 

(8)外鍵關聯

 

 

多外鍵關聯:

 

 

 

 


多對多模式例子:

 

 

 

 

 

 

 

 

 

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM