sqlalchemy2

#!/usr/bin/env python
# -*- coding:utf-8 -*-

from sqlalchemy import create_engine,and_,or_,func,Table
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String,ForeignKey
from  sqlalchemy.orm import sessionmaker,relationship



engine = create_engine('sqlite:///dbyuanabcd4970.db', echo=True)

Base = declarative_base() #生成一个SqlORM 基类


class HostToGroup(Base):
    __tablename__='host_2_group'
    nid=Column(Integer,primary_key=True)
    host_id=Column(Integer,ForeignKey("host.id"))
    group_id=Column(Integer,ForeignKey("group.id"))


class Host(Base):
    __tablename__ = 'host'

    id = Column(Integer,primary_key=True,autoincrement=True)
    hostname = Column(String(64),unique=True,nullable=False)
    ip_addr = Column(String(128),unique=True,nullable=False)
    port = Column(Integer,default=22)
    group = relationship('Group',
                          secondary=HostToGroup.__table__,
                          backref='host_list')

    #group =relationship("Group",back_populates='host_list')
    def __repr__(self):
        return  "<id=%s,hostname=%s, ip_addr=%s>" %(self.id,
                                                    self.hostname,
                                                    self.ip_addr)
class Group(Base):
    __tablename__ = 'group'
    id = Column(Integer,primary_key=True)
    name = Column(String(64),unique=True,nullable=False)

    def __repr__(self):
        return  "<id=%s,name=%s>" %(self.id,self.name)

Base.metadata.create_all(engine) #创建所有表结构

if __name__ == '__main__':
    SessionCls = sessionmaker(bind=engine)
    session = SessionCls()


    # g1 = Group(name='g1')
    # g2 = Group(name='g2')
    # g3 = Group(name='g3')
    # g4 = Group(name='g4')
    # session.add_all([g1,g2,g3,g4])
    # h1 = Host(hostname='h1',ip_addr='192.168.1.56')
    # h2 = Host(hostname='h2',ip_addr='192.168.1.57',port=10000)
    # h3 = Host(hostname='ubuntu',ip_addr='192.168.1.58',port=10000)
    #
    # h1.group=[g2,g4]
    # session.add_all([h1,h2,h3])
    # session.commit()


    # groups = session.query(Group).all()
    # h2 = session.query(Host).filter(Host.hostname=='h2').first()
    # h2.group = groups[:-1]
    # print("===========>",h2.group)



    # g4 = session.query(Group).filter(Group.name=='g4').first()
    # print(g4)
    # obj1 = session.query(Host).filter(Host.hostname=='h1').update({'port':444})
    # 
    # obj2= session.query(Host).filter(Host.hostname=='h1').first()
    # print("h1:",obj2.group)
    # print("g:",g4.host_list )



    

    session.commit()
View Code

 

#!/usr/bin/env python
# -*- coding:utf-8 -*-
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('sqlite:///dbyuan67.db', echo=True)

Base = declarative_base()


class Men(Base):
    __tablename__ = 'men'
    id = Column(Integer, primary_key=True)
    name = Column(String(32))
    age= Column(String(16))


    # __table_args__ = (
    # UniqueConstraint('id', 'name', name='uix_id_name'),
    #     Index('ix_id_name', 'name', 'extra'),
    # )

class Women(Base):
    __tablename__ ='women'
    id = Column(Integer, primary_key=True)
    name = Column(String(32))
    age= Column(String(16))

    men_id=Column(String(20), ForeignKey('men.id'),unique=True)
    bf=relationship("Men",backref="gf")

Base.metadata.create_all(engine)




Session = sessionmaker(bind=engine)
session = Session()

m1=Men(name='alex',age=18)
w1=Women(name='如花',age=40)
w2=Women(name='铁锤',age=45)



m1.gf=[Women(name='如花',age=40),Women(name='铁锤',age=45)]


session.add(m1)
session.commit()
View Code

 

#!/usr/bin/env python
# -*- coding:utf-8 -*-

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('sqlite:///dbyuan691.db', echo=True)

Base = declarative_base()


class Son(Base):
    __tablename__ = 'son'
    id = Column(Integer, primary_key=True)
    name = Column(String(32))
    age= Column(String(16))

    father_name=Column(String(20),ForeignKey('father.name'))
    father=relationship('Father')
    
    __table_args__ = (
    UniqueConstraint('id', 'name', name='uix_id_name'),
        Index('ix_id_name', 'name', 'extra'),
    )

class Father(Base):
    __tablename__ ='father'

    id = Column(Integer, primary_key=True)
    name = Column(String(32))
    age= Column(String(16))
    son=relationship('Son')

Base.metadata.create_all(engine)




Session = sessionmaker(bind=engine)
session = Session()

f1=Father(name='alvin',age=50)
w1=Son(name='little alvin1',age=4)
w2=Son(name='little alvin2',age=5)



f1.son=[w1,w2]


session.add(f1)
session.commit()
View Code

 

#!/usr/bin/env python
# -*- coding:utf-8 -*-
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('sqlite:///dbyuan674uu.db', echo=True)

Base = declarative_base()



class Men_to_Wemon(Base):
    __tablename__ = 'men_to_wemon'
    nid = Column(Integer, primary_key=True)
    men_id = Column(Integer, ForeignKey('men.id'))
    women_id = Column(Integer, ForeignKey('women.id'))



class Men(Base):
    __tablename__ = 'men'
    id = Column(Integer, primary_key=True)
    name = Column(String(32))
    age= Column(String(16))



class Women(Base):
    __tablename__ ='women'
    id = Column(Integer, primary_key=True)
    name = Column(String(32))
    age= Column(String(16))
    bf=relationship("Men",secondary=Men_to_Wemon.__table__,backref='gf')



Base.metadata.create_all(engine)



Session = sessionmaker(bind=engine)
session = Session()


m1=Men(name='alex',age=18)
m2=Men(name='wusir',age=18)
w1=Women(name='如花',age=40)
w2=Women(name='铁锤',age=45)

# t1=Men_to_Wemon(men_id=1,women_id=2)



m1.gf=[w1,w2]
w1.bf=[m1,m2]


session.add_all([m1,m2,w1,w2])


session.commit()
View Code

 

#!/usr/bin/env python
# -*- coding:utf-8 -*-
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('sqlite:///dbyuan67.db?')

Base=declarative_base()


class Men(Base):
    __tablename__ = 'men'
    id = Column(Integer, primary_key=True)
    name = Column(String(32))
    age= Column(String(16))

    # __table_args__ = (
    # UniqueConstraint('id', 'name', name='uix_id_name'),
    #     Index('ix_id_name', 'name', 'extra'),
    # )

    def __repr__(self):
        return self.name

class Women(Base):
    __tablename__ ='women'
    id = Column(Integer, primary_key=True)
    name = Column(String(32))
    age= Column(String(16))

    men_id=Column(String(20), ForeignKey('men.id'))
    # def __repr__(self):
    #     return self.age

# Base.metadata.create_all(engine)
# Base.metadata.drop_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
# select * from
# select id,name from women
# sql=session.query(Women).all()
# select * from women inner join men on women.men_id = men.id
sql = session.query(Women.age,Men.name).join(Men).all()
print(sql)
# print(sql)
# r = session.query(session.query(Women.name.label('t1'), Men.name.label('t2')).join(Men).all()).all()
# print(r)

# r = session.query(Women).all()
# print(r)


# m1=Men(name='alex',age=18)
# w1=Women(name='如花',age=40)
# w2=Women(name='铁锤',age=45)
# m1.gf=[Women(name='如花',age=40),Women(name='铁锤',age=45)]

# m1=Men(name='alex',age=18)
# w1=Women(name='如花',age=40,men_id = 1)
# w2=Women(name='铁锤',age=45,men_id = 1)
# session.add_all([w1,w2])
# session.commit()
View Code

 

 
 
 
 
1
0
 
 
 
« 上一篇: Py西游攻关之多线程(threading模块)
» 下一篇: Py西游攻关之多进程(multiprocessing模块)

转载于:https://www.cnblogs.com/skyflask/articles/8282571.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值