安裝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()
