[ python-002 ] python常用模块、方法(2)

182 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第28天,点击查看活动详情

本节继续上一节,对python常用的组件和方法进行讲解

pymongo

python3 -m pip3 install pymongo==4.2.10

安装好对应的pymongo版本,使用该命令即可对mongo数据库进行操作

client = MongoClient("172.16.17.25", 27017)
db = client.admin
db.authenticate("admin", "admin", mechanism='SCRAM-SHA-1')
test_assets = client.test_assets
linux_host = test_assets.linux_host
for i in linux_host.find():
    print(i)

python mysql

pip uninstall mysql-connector

pip uninstall mysql-connector-python

pip install mysql-connector

执行python文件是报错,发现是文件命名有问题

直接就找这个mysql.py文件,而不是运行系统自带的mysql模块。

于是我把mysql.py名字改成mysql1.py,效果立竿见影!

python redis

$ pip install redis

Looking in indexes: mirrors.aliyun.com/pypi/simple

Requirement already satisfied: redis in /home/qingteng/.local/lib/python3.8/site-packages (2.10.6)

注意这里使用python3运行

python kafka

pip install confluent-kafka

安装插件后,按照代码方法即可连接和使用kafka

from kafka import KafkaConsumer
from datetime import datetime, timedelta
from confluent_kafka import Consumer
import time

# pip install confluent-kafka
 
topic_name = '__consumer_offsets'
 
# f_w = open("/data/test/data_dir/consumer_202201301455.txt", "w", encoding="utf-8")
 
consumer = KafkaConsumer(topic_name,
                         group_id='test',
                         # enable_auto_commit=True,
                         # auto_commit_interval_ms=2,
                         sasl_mechanism="PLAIN",
                         security_protocol='SASL_PLAINTEXT',
                         sasl_plain_username="test",
                         sasl_plain_password="test",
                         bootstrap_servers=['172.16.2.94:9092'])
 
for msg in consumer:
    recv = "%s:%d:%d: key=%s value=%s" % (msg.topic, msg.partition, msg.offset, msg.key, msg.value)
    print(recv)

python es

pip install elasticsearch

安装插件后,按照代码方法即可连接和使用elasticsearch

class OperateES():
    def __init__(self, host, port, user, passwd):
        self.host = host
        self.port = port
        self.user = user
        self.passwd = passwd
        self.es = self._authenticate()

    def _authenticate(self):
        # print(self.user, self.passwd, self.host, self.port)
        es = Elasticsearch(['%s:%s@%s:%s' % (self.user, self.passwd, self.host, self.port)])
        #es = Elasticsearch(['172.16.12.25'],http_auth=('elastic','test'),port=9200)
        #print(es)
        return es

    def get_cluseter_settins(self):
        settings = self.es.cluster.get_settings()
        print(settings)
        return settings

    #查询并返回所有索引信息
    def get_all_indexs_info(self):
        #结果为字符串类型矩阵
        indexs_info = self.es.cat.indices()
        return indexs_info

if __name__ == "__main__":
    host = "172.16.17.193"
    port = "9200"
    user = "elastic"
    passwd = "test"
    es = OperateES(host,port,user,passwd)
    #es.get_thread_pool()
    print(es.get_all_indexs_info())

python 数组合并

#合并后赋值给新数组a3

a3 = a1 + a2

python 数组包含

inventory = ["sword", "armor", "shield", "healing potion"]
if "healing potion" in inventory:
    print "You will live to fight another day."

python 数字长度

print(len(list1))

python 判断json存在字段

value = data.get(key)
if (type(value) != type({}) and type(value) != type([])):

python 判断KeyError
TypeError: object of type 'NoneType' has no len()

python 判断 NoneType
if text is None:
    print('test is ' + None)
else:
    print('test is not ' + None)

python 拷贝对象

copy.copy

python i++

python中没有类似i++之类实现+1的运算符

总结

python目前是越来越多的程序员必备的技能,相对于shell脚本,编写更为容易,学习成本较低。因为大多数操作系统自带python,因此也比较容易推广。使用python我们可以很方便的连接大多数业务相关的常用组件,例如kafka、es等等,而且第三方依赖库目前也是比较齐全的,代码编写也没有java那么复杂,实现相同的功能,如果为了简单易用,还是推荐使用轻量级的python脚本。