python3 RabbitMQ

 

RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。

MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消 息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。

mq和mysql_sqlalchemy

mq和mysql_mq和mysql_02

1 #!/usr/bin/env python3
 2 # -*- coding:utf-8 -*-
 3 # Author:liushubao
 4 import pika
 5 
 6 # ######################### 生产者 #########################
 7 
 8 connection=pika.BlockingConnection(pika.ConnectionParameters(
 9         host='localhost'))
10 channel = connection.channel()
11 
12 channel.queue_declare(queue='hello')
13 
14 channel.basic_publish(exchange='',
15                       routing_key='hello',
16                       body='Hello World!')
17 print(" [x] Sent 'Hello World!'")
18 connection.close()

pika

python3 MySQL:

Python3 操作mysql

  什么是mysql ---------------数据库、什么是数据库------------数据的库房!库房有库房的一套管理方法,得学!简单的学习一点基本的操作就行了!搞多了就成DBA了!

  简单的MySQL语句: 安装就不是了百度很多!

     

 python3 sqlAlchemy

把关系数据库的表结构映射到对象上。是不是很简单? 

SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果。

 

  Python3为什么要借助sqlAlchemy 来搞MySQL呢。----------因为不用写sql语句,不用重写sql语句。!

    这个玩意就是把sql语句封装成了类,我们直接调用对象。不正是python3 之道吗?

 通过sqlalchemy 搞一搞原生的sql语句! 

mq和mysql_sqlalchemy

mq和mysql_mq和mysql_02

1 #!/usr/bin/env python3
 2 # -*- coding:utf-8 -*-
 3 # Author:liushubao
 4 from sqlalchemy import create_engine    # 导入创建引擎模块
 5 engine = create_engine("mysql+mysql://root:@127.0.0.1:3306/s12_testdb",max_overflow=5) # 创建一个引擎
 6 
 7 ## 引擎操作原生的sql语句::::
 8 
 9 engine.execute(
10     "INSERT INTO ts_test (a, b) VALUES ('2', 'v1')"
11 )
12 
13 engine.execute(
14      "INSERT INTO ts_test (a, b) VALUES (%s, %s)",
15     ((555, "v1"),(666, "v1"),)
16 )
17 engine.execute(
18     "INSERT INTO ts_test (a, b) VALUES (%(id)s, %(name)s)",
19     id=999, name="v1"
20 )
21 
22 result = engine.execute('select * from ts_test')
23 result.fetchall()

简单实用sqlalchemy

 真正干活了!-----单个表-增删改查!

 

mq和mysql_sqlalchemy

mq和mysql_mq和mysql_02

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
# Author:liushubao
from sqlalchemy.ext.declarative import declarative_base  # 导入可以创建的基类的模块
from sqlalchemy import Column, Integer, String
from sqlalchemy import create_engine                    # 从sqlalchemy 导入创建引擎这个模块
from sqlalchemy.orm import sessionmaker,session
Base = declarative_base()                   # 创建一个ORM基类 ,这是个固定写法,因为下面要用类对数据库操作,要继承这个类。

engine = create_engine("mysql+pymysql://root:123@127.0.0.1:3306/liushubao", max_overflow=5,echo=False) #echo是显示创建过程!
#创建一个引擎,        用MySQL      用户名:密码@主机名:端口号/那个数据库,最大连接数!

# 创建单表
class Users(Base):      #继承刚刚那个基类必须!
    __tablename__ = 'users' #  开始了,这个是要创建的表单名字
    id = Column(Integer, primary_key=True,autoincrement=True) #列的属性
    name = Column(String(32),unique=True,nullable=False)     #列的属性
    extra = Column(String(16),unique=True,nullable=False)    #列的属性

#------------------上面表示影射成功,但不代表创建,-----------------
Base.metadata.create_all(engine)  #创建表所有结构!!
#--------------------增加数据------------------------
if __name__ =='__main__':
    SessionCls = sessionmaker(bind=engine)  #创建与数据库连接的session!它返回的是一个类名!
    h1 = Users(name='liushubao',extra = 'hello world')      #给表里插入数据!!
    h2 = Users(name='shubao', extra='welcome to hello world!')  # 给表里插入数据!!
    session.add(h1) # 单个添加
    session.add_all([h1,h2])  #批量添加
    session.commit()  # 添加生效!
#########################查询修改##############################################
if __name__ =='__main__':
    SessionCls = sessionmaker(bind=engine)  #创建与数据库连接的session!它返回的是一个类名!
    obj = session.query(Users).filter(Users.name = 'liushubao').first() #查询后返回的是一个对象
    obj.name = 'LIUSHUBAO'
    session.commit()  # 添加生效!
#########################    删除    ##############################################
if __name__ =='__main__':
    SessionCls = sessionmaker(bind=engine)  #创建与数据库连接的session!它返回的是一个类名!
    obj = session.query(Users).filter(Users.name = 'LIUSHUBAO').first() #返回的是一个对象
    session.delete(obj)  # 删除
    session.commit()  # 添加生效!

sqlalchemy

 

 真正干大活了!-----多表、联表!

mq和mysql_sqlalchemy

mq和mysql_mq和mysql_02

1 # Author:Alex Li
 2 from sqlalchemy.ext.declarative import declarative_base
 3 from sqlalchemy import Column, Integer, String, ForeignKey, UniqueConstraint, Index
 4 from sqlalchemy.orm import sessionmaker, relationship
 5 from sqlalchemy import create_engine
 6 
 7 engine = create_engine("mysql+pymysql://root:123@127.0.0.1:3306/s13", max_overflow=5)
 8 
 9 Base = declarative_base()
10 
11 # 创建单表
12 class Users(Base):
13     __tablename__ = 'users'
14     id = Column(Integer, primary_key=True)
15     name = Column(String(32))
16     extra = Column(String(16))
17 
18     __table_args__ = (
19     UniqueConstraint('id', 'name', name='uix_id_name'),
20         Index('ix_id_name', 'name', 'extra'),
21     )
22 
23 # 一对多
24 class Favor(Base):
25     __tablename__ = 'favor'
26     nid = Column(Integer, primary_key=True)
27     caption = Column(String(50), default='red', unique=True)
28 
29 
30 class Person(Base):
31     __tablename__ = 'person'
32     nid = Column(Integer, primary_key=True)
33     name = Column(String(32), index=True, nullable=True)
34     favor_id = Column(Integer, ForeignKey("favor.nid"))
35 
36 # 多对多
37 class ServerToGroup(Base):
38     __tablename__ = 'servertogroup'
39     nid = Column(Integer, primary_key=True, autoincrement=True)
40     server_id = Column(Integer, ForeignKey('server.id'))
41     group_id = Column(Integer, ForeignKey('group.id'))
42 
43 class Group(Base):
44     __tablename__ = 'group'
45     id = Column(Integer, primary_key=True)
46     name = Column(String(64), unique=True, nullable=False)
47 
48 
49 class Server(Base):
50     __tablename__ = 'server'
51 
52     id = Column(Integer, primary_key=True, autoincrement=True)
53     hostname = Column(String(64), unique=True, nullable=False)
54     port = Column(Integer, default=22)
55 
56 # Base.metadata.create_all(engine)
57 # Base.metadata.drop_all(engine)
58 
59 Session = sessionmaker(bind=engine)
60 session = Session()
61 
62 # obj = Users(name='alex111',extra='sss')
63 # session.add(obj)
64 # session.commit()
65 q = session.query(Users)
66 print(q)
67 ret = session.query(Users).all()
68 print(ret[0].name)
69 print(ret[0].id)
70 #
71 # session.commit()
72 # session.add_all()

View Code