python3 RabbitMQ
RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。
MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消 息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。
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语句!
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
真正干活了!-----单个表-增删改查!
#!/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
真正干大活了!-----多表、联表!
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