一、概述

衔接数据源和邮件发送和邮件接纳也是在项目中很常见的功用,数据量小的话,能够存在MySQL、Redis、PostgreSQL 等等,数据量大的话,就能够考虑大型分布式高可用存储数据库系统例如:Hadoop、StarRocks、ClickHouse等等。邮件发送一般用于告诉,像告警告诉,下单告诉,付出告诉等等。

Python 连接数据源与邮件功能(九)

二、Python 衔接数据源

1)Python MySQL 根底操作

Python是一种盛行的编程言语,而MySQL是一种常用的关系型数据库办理系统。Python中有许多不同的MySQL库可供运用,其中一些最常用的库包含:

  • MySQL Connector——这是MySQL官方供给的Python库,能够在Python 2.7和Python 3.x中运用。它供给了与MySQL数据库的衔接和交互的API,并支持多种操作系统。
  • PyMySQL ——这是一个纯Python完成的MySQL客户端库,能够在Python 2.7和Python 3.x中运用。它供给了一种简略而直接的办法来衔接到MySQL服务器,并履行查询和其他操作。

1、布置MySQL

MySQL的介绍和布置能够参阅我以下几篇文章:

  • MySQL原理介绍
  • MySQL高可用实战( MHA)
  • 【云原生】MySQL on k8s 环境布置

2、MySQL Connector 库

Python 经过 MySQL Connector 模块供给了拜访 MySQL 数据库的能力,能够经过该模块运用一系列的函数来进行数据库操作。

下面是一些常用的 Python MySQL 函数:

  • connect():用于衔接 MySQL 数据库,回来一个衔接目标。

  • cursor():用于创立一个游标目标,该目标用于履行查询句子和读取数据。

  • execute():用于履行 SQL 句子,回来受影响的行数。

  • fetchone():用于获取成果会集的下一行数据。

  • fetchall():用于获取成果会集的一切数据。

  • commit():用于提交业务。

  • rollback():用于回滚业务。

  • close():用于封闭衔接。

以下是运用MySQL Connector进行衔接和增修正查的演示示例。

【1】装置 mysql-connector-python 库

首先,需求装置mysql-connector-python库:

pip install mysql-connector-python
【2】衔接 MySQL

要进行数据库操作,需求先衔接MySQL数据库。衔接MySQL数据库的代码如下:

import mysql.connector
# 衔接到MySQL服务器
conn = mysql.connector.connect(
user='username', 
password='password', 
host='hostname', 
database='database_name'
)
mycursor = conn.cursor()
# 封闭衔接
mycursor.close()
conn.close()

在衔接数据库时需求替换hostuserpassworddatabase为相应的值。

【3】添加数据

能够运用 execute() 函数履行 INSERT INTO 句子,将数据刺进到数据库中。以下是一个示例:

import mysql.connector
# 衔接到MySQL服务器
conn = mysql.connector.connect(
user='username', 
password='password', 
host='hostname', 
database='database_name'
)
mycursor = conn.cursor()
sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
val = ("John", "Highway 21")
mycursor.execute(sql, val)
conn.commit()
print(mycursor.rowcount, "record inserted.")
# 封闭衔接
mycursor.close()
conn.close()

在这个例子中,将一条记载刺进到名为”customers”的表中。经过将数据作为元组传递给execute()办法,将值刺进到占位符中。最终,需求运用commit()办法提交更改。

【4】查询数据

能够运用 execute() 函数履行 SELECT 句子,查询数据库中的数据。以下是一个示例:

import mysql.connector
# 衔接到MySQL服务器
conn = mysql.connector.connect(
user='username', 
password='password', 
host='hostname', 
database='database_name'
)
mycursor = conn.cursor()
mycursor.execute("SELECT * FROM customers")
myresult = mycursor.fetchall()
for x in myresult:
  print(x)
# 封闭衔接
mycursor.close()
conn.close()

在这个例子中,从名为”customers”的表中挑选一切记载,并运用fetchall()办法将成果存储在变量myresult中。最终,运用循环打印每个记载。

【5】更新数据

能够运用 execute() 函数履行 UPDATE 句子,更新数据库中的数据。以下是一个示例:

import mysql.connector
# 衔接到MySQL服务器
mydb = mysql.connector.connect(
user='username', 
password='password', 
host='hostname', 
database='database_name'
)
mycursor = mydb.cursor()
sql = "UPDATE customers SET address = 'Canyon 123' WHERE address = 'Highway 21'"
mycursor.execute(sql)
mydb.commit()
print(mycursor.rowcount, "record(s) affected")
# 封闭衔接
cursor.close()
conn.close()

在这个例子中,将名为”customers”的表中地址为”Highway 21″的记载的地址更新为”Canyon 123″。

【6】删去数据

能够运用 execute() 函数履行 DELETE 句子,删去数据库中的数据。以下是一个示例:

import mysql.connector
# 衔接到MySQL服务器
mydb = mysql.connector.connect(
user='username', 
password='password', 
host='hostname', 
database='database_name'
)
mycursor = mydb.cursor()
sql = "DELETE FROM customers WHERE address = 'Canyon 123'"
mycursor.execute(sql)
mydb.commit()
print(mycursor.rowcount, "record(s) deleted")
# 封闭衔接
cursor.close()
conn.close()

2、PyMySQL 库

Python PyMySQL 是一个纯 Python 完成的 MySQL 客户端库,运用 PyMySQL 能够衔接 MySQL 数据库并履行数据库操作。下面介绍一些 PyMySQL 常用的函数:

  • connect():用于衔接 MySQL 数据库,回来一个衔接目标。

  • cursor():用于创立一个游标目标,该目标用于履行查询句子和读取数据。

  • execute():用于履行 SQL 句子,回来受影响的行数。

  • executemany():用于履行多个 SQL 句子,回来受影响的行数。

  • fetchone():用于获取成果会集的下一行数据。

  • fetchall():用于获取成果会集的一切数据。

  • fetchmany():用于获取成果会集指定数量的数据。

  • commit():用于提交业务。

  • rollback():用于回滚业务。

  • close():用于封闭衔接。

【1】装置 PyMySQL 库

首先,需求装置PyMySQL库:

pip install PyMySQL
【2】衔接 MySQL

要进行数据库操作,需求先衔接MySQL数据库。衔接MySQL数据库的代码如下:

接下来,衔接到MySQL服务器并履行查询:

import pymysql
# 衔接到MySQL服务器
conn = pymysql.connect(
    host='hostname',
    port=port,
    user='username',
    password='password',
    db='database_name',
    charset='utf8'
)
# 创立游标目标
mycursor = conn.cursor()

在上面的代码中,需求将hostnameportusernamepassworddatabase_name替换为实践的数据库衔接信息。

【3】添加数据

能够运用 execute() 函数履行 INSERT INTO 句子,将数据刺进到数据库中。以下是一个示例:

import pymysql
# 衔接数据库
conn = pymysql.connect(
  host="localhost",
  user="username",
  password="password",
  database="mydatabase"
)
# 创立游标目标
mycursor = conn.cursor()
# 履行刺进句子
sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
val = ("John", "Highway 21")
mycursor.execute(sql, val)
# 提交业务
conn.commit()
# 打印刺进数据的 ID
print(mycursor.lastrowid)
# 封闭衔接
cursor.close()
conn.close()
【4】查询数据

能够运用 execute() 函数履行 SELECT 句子,查询数据库中的数据。以下是一个示例:

import pymysql
# 衔接数据库
conn = pymysql.connect(
  host="localhost",
  user="username",
  password="password",
  database="mydatabase"
)
# 创立游标目标
mycursor = conn.cursor()
# 履行查询句子
sql = "SELECT * FROM customers"
mycursor.execute(sql)
# 获取成果会集的一切数据
myresult = mycursor.fetchall()
# 打印数据
for x in myresult:
  print(x)
# 封闭衔接
cursor.close()
conn.close()
【5】更新数据

能够运用 execute() 函数履行 UPDATE 句子,更新数据库中的数据。以下是一个示例:

import pymysql
# 衔接数据库
conn = pymysql.connect(
  host="localhost",
  user="username",
  password="password",
  database="mydatabase"
)
# 创立游标目标
mycursor = conn.cursor()
# 履行更新句子
sql = "UPDATE customers SET address = 'Canyon 123' WHERE address = 'Highway 21'"
mycursor.execute(sql)
# 提交业务
conn.commit()
# 打印受影响的行数
print(mycursor.rowcount)
# 封闭衔接
cursor.close()
conn.close()
【6】更新数据

能够运用 execute() 函数履行 DELETE 句子,删去数据库中的数据。以下是一个示例:

import pymysql
# 衔接数据库
conn = pymysql.connect(
  host="localhost",
  user="username",
  password="password",
  database="mydatabase"
)
# 创立游标目标
mycursor = conn.cursor()
# 履行删去句子
sql = "DELETE FROM customers WHERE address = 'Canyon 123'"
mycursor.execute(sql)
# 提交业务
conn.commit()
# 打印受影响的行数
print(mycursor.rowcount)
# 封闭衔接
cursor.close()
conn.close()

上述代码演示了怎么衔接到 MySQL 数据库、履行刺进、更新、删去和查询操作以及封闭衔接。在实践运用中,还能够运用其他函数来履行杂乱的操作,如衔接池、业务办理等。

2)Python Redis 根底操作

Redis 是一种基于内存的数据结构存储系统,它能够用作数据库、缓存和消息代理。Python 是一种盛行的编程言语,供给了一个 Redis 客户端库,能够轻松地与 Redis 交互。下面是一些 Python Redis 根本操作的示例。

1、布置 Redis

Redis 的介绍和布置能够参阅我以下几篇文章:

  • Redis原理介绍
  • Redis原理介绍与环境布置(主从模式、岗兵模式、集群模式)
  • 【云原生】Redis on k8s 编排布置解说与实战操作

2、Python Redis 根本操作

【1】装置 Redis 客户端库

要在 Python 中运用 Redis,需求装置 Redis 客户端库。能够运用 pip 东西装置:

pip install redis
【2】衔接 Redis

在 Python 中衔接 Redis,需求运用 Redis 客户端库中的 Redis 类。能够运用以下代码衔接到 Redis:

import redis
redis_client = redis.Redis(host='localhost', port=6379, db=0)
【3】设置键值对

能够运用 set 办法设置键值对:

redis_client.set('key', 'value')

也能够运用 mset 办法一次设置多个键值对:

redis_client.mset({'key1': 'value1', 'key2': 'value2'})
【4】获取键值对

能够运用 get 办法获取单个键的值:

value = redis_client.get('key')
print(value)

也能够运用 mget 办法一次获取多个键的值:

values = redis_client.mget(['key1', 'key2'])
print(values)
【5】删去键

能够运用 delete 办法删去一个键:

redis_client.delete('key')

也能够运用 delete 办法删去多个键:

redis_client.delete('key1', 'key2')
【6】判断键是否存在

能够运用 exists 办法判断一个键是否存在:

exists = redis_client.exists('key')
print(exists)
【7】设置过期时刻

能够运用 expire 办法设置一个键的过期时刻(以秒为单位):

redis_client.expire('key', 60)

也能够运用 expireat 办法设置一个键的过期时刻(以 Unix 时刻戳为单位):

import time
expire_time = int(time.time()) + 60
redis_client.expireat('key', expire_time)
【8】自增和自减

能够运用 incr 办法对一个键进行自增操作:

redis_client.set('count', 0)
redis_client.incr('count')

也能够运用 decr 办法对一个键进行自减操作:

redis_client.set('count', 10)
redis_client.decr('count')

以上是一些 Python Redis 的根本操作示例,能够依据具体需求进行适当修正和调整。

三、邮件功用

Python 中能够运用标准库中的 smtplibemail 模块来发送和接纳电子邮件。

1)注册邮箱服务功用

1、邮件协议介绍

SMTP、POP3和IMAP都是电子邮件协议,用于在核算机之间传递和接纳电子邮件。

  • SMTP(Simple Mail Transfer Protocol)是用于发送电子邮件的协议。它界说了电子邮件怎么经过互联网发送,包含怎么衔接到邮件服务器、怎么验证身份、怎么传输邮件、怎么处理错误等。

  • POP3(Post Office Protocol version 3)是用于接纳电子邮件的协议。它界说了电子邮件怎么从邮件服务器下载到本地核算机上的电子邮件客户端。POP3协议答应用户下载一切的邮件,但是在本地核算机上只保存一份副本。

  • IMAP(Internet Message Access Protocol)也是用于接纳电子邮件的协议。它界说了电子邮件怎么从邮件服务器下载到本地核算机上的电子邮件客户端。IMAP协议答应用户对邮件进行办理和安排,例如在本地核算机上创立文件夹来存储邮件,而不是在邮件服务器上。这使得IMAP更合适那些需求在多个设备上运用电子邮件的用户。

总归,SMTP、POP3和IMAP是三种不同的协议,每个协议都有其独特的作用,使得电子邮件的发送和接纳变得愈加便捷和高效。简略地说,SMTP管,POP3/IMAP管

POP(Post Office Protocol)和 IMAP(Internet Message Access Protocol)都是电子邮件客户端和邮件服务器之间的协议,但是它们在处理电子邮件的方法上有一些重要的区别:

  • 工作方法:POP将邮件从邮件服务器下载到本地核算机上的邮件客户端,然后将邮件从邮件服务器中删去,这意味着用户只能在本地核算机上拜访邮件的一份副本;而IMAP将邮件保存在邮件服务器上,只有在用户请求拜访邮件时才会下载邮件到本地核算机上的邮件客户端。

  • 多设备支持:因为POP只下载邮件的一份副本到本地核算机上,因而假如用户运用多个设备(如电脑、平板电脑、智能手机等)来拜访邮件,则每个设备上的邮件客户端都会显现不同的邮件状况。而IMAP协议答应用户在多个设备上拜访邮件,因为邮件始终保存在邮件服务器上。

  • 邮件办理:IMAP答应用户在邮件服务器上对邮件进行办理,例如创立、删去和重命名文件夹,符号邮件已读或未读等。这使得用户能够轻松地在多个设备之间同步邮件状况。而POP协议只是简略地下载邮件并删去它们,不能像IMAP那样办理邮件。

  • 带宽:因为IMAP只在用户需求拜访邮件时才下载邮件,因而它能够节省带宽。而POP在每次下载邮件时都会占用带宽,因为它要下载一切邮件的一份副本。

总归,IMAP是更先进的邮件协议,能够供给更多的功用和灵活性,特别是关于那些需求在多个设备上拜访邮件的用户。而POP合适那些只运用单个设备拜访邮件的用户。

2、QQ邮箱敞开邮件服务设置

Python 连接数据源与邮件功能(九)
Python 连接数据源与邮件功能(九)

3、163邮箱敞开邮件服务设置

Python 连接数据源与邮件功能(九)
Python 连接数据源与邮件功能(九)
Python 连接数据源与邮件功能(九)

最终整理一下邮箱服务器:

Python 连接数据源与邮件功能(九)

2)Python 邮件示例解说

以下是一个简略的 Python 脚本,演示了怎么运用这两个模块来发送电子邮件。

发送邮件实例:

import smtplib
from email.mime.text import MIMEText
from email.header import Header
# 设置邮件参数
smtp_server = 'smtp.example.com'  # 邮件服务器
from_addr = 'your_email@example.com'  # 发件人邮箱
to_addr = 'recipient_email@example.com'  # 收件人邮箱
username = 'your_email@example.com'  # 发件人邮箱账号
password = 'your_email_password'  # 发件人邮箱暗码
# 构建邮件内容
msg = MIMEText('Hello, this is a test email sent by Python.', 'plain', 'utf-8')
msg['From'] = Header('Sender Name', 'utf-8')
msg['To'] = Header('Recipient Name', 'utf-8')
msg['Subject'] = Header('Python Test Email', 'utf-8')
# 发送邮件
try:
    server = smtplib.SMTP(smtp_server, 25)
    server.login(username, password)
    server.sendmail(from_addr, to_addr, msg.as_string())
    server.quit()
    print("Email sent successfully!")
except smtplib.SMTPException:
    print("Error: 无法发送邮件")

接纳邮件示例:

import poplib
# 设置邮件参数
pop_server = 'pop.example.com'  # 邮件服务器
username = 'your_email@example.com'  # 邮箱账号
password = 'your_email_password'  # 邮箱暗码
# 衔接到邮件服务器
server = poplib.POP3(pop_server)
server.user(username)
server.pass_(password)
# 获取邮件列表
resp, mails, octets = server.list()
print("Total emails: {}".format(len(mails)))
# 获取最新一封邮件
resp, lines, octets = server.retr(len(mails))
msg_content = b'\n'.join(lines).decode('utf-8')
# 解析邮件内容
from email.parser import Parser
msg = Parser().parsestr(msg_content)
print("Subject: {}".format(msg['Subject']))
print("From: {}".format(msg['From']))
print("To: {}".format(msg['To']))
print("Content:\n{}".format(msg.get_payload()))

这儿的示例代码仅仅是一个简略的示例,能够依据具体的需求来修正和扩展。在运用示例时,留意修正上面的衔接信息哦。


Python 衔接数据源与邮件功用的解说就先到这儿了,有任何疑问欢迎给我留言哦,欢迎点赞、转发并收藏哦,也可重视我的公众号【大数据与云原生技能分享】进行深入交流技能~

Python 连接数据源与邮件功能(九)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。