python中orm框架學習


安裝sqlalchemy

pip3 install sqlalchemy

創建表結構:

from sqlalchemy import Column,String,create_engine
from sqlalchemy.orm import sessionmaker,relationship
from sqlalchemy.ext.declarative import declarative_base

import pymysql
#創建對象的基類
Base = declarative_base()
#定義user對象
class User(Base):
    #表的名字
    __tablename__ = 'user'
    #表的結構
    id = Column(Integer,primary_key=True,autoincrement=True)
    name = Column(String(20))
#初始化數據庫連接
#數據庫類型+數據庫驅動名稱://用戶名:口令@機器地址:端口號/數據庫名

engine = create_engine('mysql+pymysql://root:123456@192.168.170.129:3306/learn_orm',max_overflow=5)
Base.metadata.create_all(engine)

#創建DBSession類型
DBSession = sessionmaker(bind=engine)

一對多核多對多

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,Integer,String,ForeignKey,UniqueConstraint,Index
from sqlalchemy.orm import sessionmaker,relationship
from sqlalchemy import create_engine
engine = create_engine("mysql+pymysql://root:123456@192.168.180.129:3306/test",max_overflow=5)
Base = declarative_base()
#創建單表
class Users(Base):
    __tablename__ = 'users'
    id = Column(Integer,primary_key=True)
    name = Column(String(32))
    extra = Column(String(16))

#一對多

class Favor(Base):
    __tablename__ = 'favor'
    nid = Column(Integer,primary_key=True)
    caption = Column(String(50),default='red',unique=True)

class Person(Base):
    __tablename__ = 'person'
    nid = Column(Integer,primary_key=True)
    name = Column(String(32),index=True,nullable=True)
    favor_id = Column(Integer,ForeignKey('favor.nid'))

#多對多
class Group(Base):
    __tablename__ = 'group'
    nid = Column(Integer,primary_key=True)
    name = Column(String(64),unique=True,nullable=False)
    port = Column(Integer,default=22)


class Server(Base):
    __tablename__ = 'server'
    id = Column(Integer,primary_key=True,autoincrement=True)
    hostname = Column(String(64),unique=True,nullable=False)
class ServerToGroup(Base):
    __tablename__ = 'servertogroup'
    nid = Column(Integer,primary_key=True,autoincrement=True)
    server_id = Column(Integer, ForeignKey('server.id'))
    group_id = Column(Integer, ForeignKey('group.nid'))
# Base.metadata.create_all(engine) #生成表
Base.metadata.drop_all(engine) #生成表

#添加數據(往Users表增加數據)

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,Integer,String,ForeignKey,UniqueConstraint,Index
from sqlalchemy.orm import sessionmaker,relationship
from sqlalchemy import create_engine
from orm一對多和多對多 import Users  #從orm一對多和對多程序中導入Users類
engine = create_engine("mysql+pymysql://root:123456@192.168.180.129:3306/test",max_overflow=5)
Base = declarative_base()
Base.metadata.create_all(engine) #生成表
# Base.metadata.drop_all(engine) #生成表
Session =  sessionmaker(bind=engine)
session = Session()
#增加數據
obj = Users(name="parktrick",extra="Devops")
session.add(obj)
session.commit()  #不執行這步,數據是寫入不了數據庫的

#刪除User表某條數據

#刪除數據
session.query(Users).filter(Users.id > 2).delete() #把Users.id大於2的數據刪除掉
session.commit()

#修改數據

#修改數據
session.query(Users).filter(Users.id > 1).update({"name":"bob"}) #修改User.id大於1的name為"bob"
session.commit()

 

 


免責聲明!

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



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