Tag: Python

  • 如何使用Python清除测试数据:一次性删除数据库中的记录

    如何使用Python清除测试数据:一次性删除数据库中的记录

    在软件开发和测试中,测试数据的管理是一个常见的挑战。想象一下,你正在进行测试,并且需要频繁地清除数据库中的记录以进行新一轮的测试。手动删除这些记录是繁琐且容易出错的,因此有一个自动化的工具将会非常有用。今天,我们将为你展示如何创建这样一个工具,让你的测试工作更加高效。

    准备工作

    在开始之前,你需要准备以下几项:

    1. Python安装:确保你的计算机上已经安装了Python。如果没有安装,你可以从Python官网下载并安装最新版本的Python。

    2. cx_Oracle库:如果你的项目中使用的是Oracle数据库,你需要安装cx_Oracle库,这个库可以帮助你与Oracle数据库进行连接和操作。你可以使用以下命令来安装它:

      pip install cx-Oracle
    3. 数据库连接信息:你需要知道你要连接的数据库的用户名、密码、主机地址和端口号。确保这些信息正确无误。

    编写Python脚本

    现在,让我们开始编写Python脚本来清除数据库中的记录。下面是一个简单的示例脚本,你可以根据你的项目需求进行修改和扩展。

    import cx_Oracle as cx
    
    def clear_database_data(username, password, host, port, sid, table_name, condition):
        try:
            # 连接数据库
            db = cx.connect(f'{username}/{password}@{host}:{port}/{sid}')
            cursor = db.cursor()
    
            # 构建SQL语句
            sql = f'DELETE FROM {table_name} WHERE {condition}'
    
            # 执行SQL语句
            cursor.execute(sql)
    
            # 提交事务
            db.commit()
    
            # 关闭数据库连接
            cursor.close()
            db.close()
    
            print(f'成功删除 {table_name} 中满足条件 {condition} 的记录!')
        except cx.Error as error:
            print(f'删除记录时发生错误:{error}')
    
    # 在这里设置数据库连接信息
    username = 'your_username'
    password = 'your_password'
    host = 'your_host'
    port = 'your_port'
    sid = 'your_sid'
    
    # 设置要清除的数据表名和条件
    table_name = 'your_table_name'
    condition = 'your_condition'
    
    # 调用函数清除数据
    clear_database_data(username, password, host, port, sid, table_name, condition)

    在这个脚本中,我们首先导入了cx_Oracle库,并定义了一个clear_database_data函数,该函数接受数据库连接信息、要清除的数据表名和条件作为参数。然后,在函数内部,我们进行了以下操作:

    1. 连接到数据库。
    2. 构建SQL语句,其中包括要删除数据的表名和条件。
    3. 执行SQL语句来删除数据。
    4. 提交事务以保存更改。
    5. 关闭数据库连接。

    你只需要根据自己的项目需求,替换掉示例中的连接信息、表名和条件,然后运行脚本即可。脚本会删除符合条件的数据库记录,从而清理测试数据。

    测试连接

    在运行脚本之前,你可以使用以下代码来测试数据库连接是否正常:

    def test_database_connection(username, password, host, port, sid):
        try:
            db = cx.connect(f'{username}/{password}@{host}:{port}/{sid}')
            ver = str(db.version)
            print(f'连接成功,版本号:{ver}')
        except cx.Error as error:
            print(f'连接失败,请检查环境!错误信息:{error}')
        finally:
            db.close()
    
    # 在这里设置数据库连接信息
    username = 'your_username'
    password = 'your_password'
    host = 'your_host'
    port = 'your_port'
    sid = 'your_sid'
    
    # 调用函数测试连接
    test_database
    
    _connection(username, password, host, port, sid)

    这段代码会尝试连接到数据库,并打印出连接成功或失败的信息。这可以帮助你在运行清除数据脚本之前确保数据库连接正常。

    结语

    通过这篇教程,你学会了如何使用Python编写一个简单而有效的工具来清除数据库中的记录。这个工具可以帮助你轻松管理测试数据,提高开发和测试的效率。记得根据你的项目需求进行适当的修改和扩展,以满足特定的数据清理需求。

    如果你有任何问题或意见,欢迎在评论中分享。希望这篇教程对你有所帮助!

  • 如何高效地将Jupyter笔记本转换为Markdown文件:一个Python教程

    如何高效地将Jupyter笔记本转换为Markdown文件:一个Python教程

    记得那个周末,我参加了一个hackathon。团队里有个小伙伴突然意识到,他想把所有Jupyter笔记本快速地转换成Markdown文件,以便在GitHub上展示或者写博客。但问题是,他对Python不熟,更别说操作nbconvert库了。就在这时,我觉得这是个不错的机会,用自己的Python技能来解决实际问题。

    好了,故事说完。今天我们要聊聊如何用Python批量转换Jupyter笔记本到Markdown文件。还等什么,赶紧开始吧!

    为什么转换Jupyter笔记本至Markdown?

    • 方便阅读:Markdown文件可以方便地在各种平台上阅读和展示。
    • 博客写作:方便你把代码和分析内容一起发布到你的博客上。
    • 代码分享:简洁、明了地展示你的代码和数据分析结果。

    先决条件

    • Python环境(推荐Python 3.6+)
    • 安装必要的库:nbconvert、nbformat、argparse、os

    安装必要库

    首先,确保你已经安装了必要的库。如果没有,运行以下命令:

    pip install nbconvert nbformat argparse

    代码剖析

    函数:convert_ipynb_to_md

    这个函数负责把指定文件夹内的Jupyter笔记本转换成Markdown文件。

    # 创建MarkdownExporter对象
    exporter = MarkdownExporter()

    我们用MarkdownExporter类来实现转换。

    # 使用nbformat将.ipynb文件转换为Notebook节点对象
    with open(input_path, 'r', encoding='utf-8') as f:
        nb = nbformat.read(f, as_version=4)

    这里,我们读取.ipynb文件,并用nbformat.read()函数把它转换成一个Notebook节点对象。

    函数:merge_md_files

    这个函数用于合并多个Markdown文件。

    merged_md = ''
    for file_name in files:
        if os.path.basename(file_name).endswith('.md'):
            file_path = os.path.abspath(file_name)
            with open(file_path, 'r', encoding='utf-8') as f:
                merged_md += f.read()

    我们把所有需要合并的Markdown文件内容读出来,然后合并。

    如何运行代码?

    保存这段代码到一个名为convert_ipynb_to_md.py的Python文件,然后在命令行运行。简单示例:

    python convert_ipynb_to_md.py -i input_folder -o output_folder

    常见问题与解决方案

    1. 出现编码错误:确保你的文件是用UTF-8编码的。
    2. 库未安装:运行pip install命令,确保所有需要的库都已安装。

    你还在等什么?

    现在你知道如何用Python把Jupyter笔记本转换成Markdown文件了,快去试试吧!

  • 用Python搭建你自己的每日提醒服务:让生活更高效

    用Python搭建你自己的每日提醒服务:让生活更高效

    想象一下,你是个忙碌的CEO,像王大神那样。你有两家公司要管理,每天的日程都排得满满当当。咖啡成了你的最佳伴侣,但即便如此,记住所有任务和会议仍然是一场挑战。这时,如果有个每日提醒服务能自动发送天气、日期、节日倒计时等信息到你的微信,岂不是极好的?今天,我要教你如何用Python实现这一切!

    为什么选择Python

    • 简单易懂:Python的语法非常直观,几乎人人都能轻易上手。
    • 丰富的库支持:Python有大量现成的库,可以帮助你迅速实现目标功能。

    先决条件

    1. 基本的Python编程知识
    2. 访问外部API的经验

    准备工作

    安装必要库

    pip install requests

    获取API准入

    1. 申请一个金山词霸API账户。
    2. 申请一个微信API账户(如果要发送到微信)。

    开始编码

    首先,你需要导入一些必要的库。

    import json
    import requests
    import datetime

    设置时间和日期

    a = datetime.datetime.now()
    today = datetime.date.today()
    day_of_week = today.weekday()
    c = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日'][day_of_week]
    time = a.strftime(f"%Y年%m月%d日 {c} %H:%M:%S")

    获取金山词霸每日一句

    url = "http://open.iciba.com/dsapi/"
    head = {'User-Agent': '你的User-Agent'}
    resp = requests.get(url, headers=head)
    r = json.loads(resp.text)
    content = r["content"] + "\n" + r["note"]

    节日倒计时

    b = datetime.datetime(2024, 2, 9)
    count_down = (b - a).days

    发送到微信

    info = "今天是"+time+"\n"+content+f"距离除夕还有{count_down}天"
    # 添加你的微信API逻辑

    总结与延伸

    现在,你已经有了一个简单但强大的每日提醒服务。你可以根据自己的需求添加更多功能,比如天气预报、股市信息等。

    • 个性化: 可以添加个性化设置,让每个用户都能收到适合自己的信息。
    • 更多API: 不仅可以使用金山词霸API,还可以使用其他有趣的API。

    通过这个小项目,你不仅可以提高自己的Python编程技能,还可以让你的生活更加便利。别等了,现在就开始吧!

  • 如何自动化发送数据库查询结果邮件:简单教程

    如何自动化发送数据库查询结果邮件:简单教程

    数据库查询是许多自由职业者和远程工作者日常工作中的一项重要任务。然而,手动执行这些查询并将结果发送给特定的收件人可能会非常耗时,特别是当这个任务需要定期执行时。为了提高工作效率,我们将学习如何使用Python编程语言和一些常见的库来自动化这个过程,以便定期自动发送数据库查询结果邮件。

    步骤一:准备工作

    在开始之前,我们需要进行一些准备工作,确保我们具备必要的工具和信息。以下是必要的准备工作:

    安装Python

    如果您尚未安装Python,请前往官方网站(https://www.python.org/)下载并安装Python。Python是一种强大的编程语言,适用于自动化任务。

    安装所需库

    我们将使用几个Python库来完成这项任务。您可以使用以下命令来安装这些库:

    pip install pandas smtplib sqlalchemy schedule

    这些库包括Pandas用于数据处理,smtplib用于发送邮件,sqlalchemy用于数据库连接,schedule用于定时任务。

    配置数据库连接

    首先,您需要提供数据库的连接信息,包括以下内容:

    • 主机地址(host)
    • 端口(port)
    • 用户名(user)
    • 密码(password)
    • 数据库名称(database)

    请确保您已经获得了这些信息,并且数据库可以远程访问,或者在本地可用。

    配置发件人邮箱

    为了发送邮件,您需要一个发件人邮箱。在此示例中,我们将使用QQ邮箱来发送邮件。请确保您已经开通了QQ邮箱的SMTP服务,并获得了授权码。

    配置收件人邮箱

    提前知道您要发送邮件的收件人邮箱地址,可以是一个或多个收件人。

    步骤二:编写Python代码

    下面是完整的Python代码,用于自动化发送数据库查询结果邮件。让我们一步步来了解代码的实现细节。

    import urllib
    import sqlalchemy
    import pandas as pd
    import smtplib
    from email.mime.text import MIMEText
    from email.mime.multipart import MIMEMultipart
    from datetime import datetime
    import schedule
    
    # 配置数据库连接
    db_config = {
        'host': '127.0.0.1',  # 请替换为您的数据库主机地址
        'port': 3306,  # 请替换为您的数据库端口
        'user': 'root',  # 请替换为您的数据库用户名
        'password': 'your_password',  # 请替换为您的数据库密码
        'database': 'your_database'  # 请替换为您的数据库名称
    }
    
    # 配置邮箱信息
    email_config = {
        'smtp_server': 'smtp.qq.com',  # 使用QQ邮箱发送
        'smtp_port': 465,  # 通用SMTP端口
        'sender_email': '[email protected]',  # 请替换为您的发件人邮箱
        'sender_password': urllib.parse.quote('your_password'),  # 请替换为您的邮箱授权码,注意处理特殊字符
        'receiver_emails': ['[email protected]', '[email protected]']  # 请替换为您的收件人邮箱列表
    }
    
    # 定义查询和发送邮件的函数
    def query_and_send_email():
        try:
            # 创建数据库连接
            engine = sqlalchemy.create_engine(
                f"mysql+pymysql://{db_config['user']}:{db_config['password']}@{db_config['host']}:{db_config['port']}/{db_config['database']}"
            )
    
            # 执行数据库查询
            query_result = pd.read_sql("SELECT * FROM your_table", engine)
    
            # 获取当前日期
            current_date = datetime.now().strftime("%Y-%m-%d")
    
            # 构建邮件内容
            subject = f"数据库查询结果 - {current_date}"
            message = MIMEMultipart()
            message['Subject'] = subject
            message['From'] = email_config['sender_email']
            message['To'] = ', '.join(email_config['receiver_emails'])
    
            # 将查询结果添加到邮件正文中
            html_content = f"<h1>数据库查询结果 - {current_date}</h1>" + query_result.to_html()
            message.attach(MIMEText(html_content, 'html'))
    
            # 发送邮件
            with smtplib.SMTP_SSL(email_config['smtp_server'], email_config['smtp_port']) as server:
                server.login(email_config['sender_email'], email_config['sender_password'])
                server.sendmail(email_config['sender_email'], email_config['receiver_emails'], message.as_string())
            print("邮件发送成功!")
        except Exception as e:
            print("发生错误:", e)
    
    # 执行查询并发送邮件
    query_and_send_email()
    
    # 定时任务设置(可选)
    # schedule.every().day.at("08:00").do(query_and_send_email)  # 每天早上8点发送
    
    # 循环执行定时任务
    # while True:
    #     schedule.run_pending()
    #     time.sleep(1)

    上述代码中有几个关键部分:

    • 我们首先配置了数据库连接信息和邮箱信息,确保它们与您的实际情况匹配。

    • query_and_send_email函数执行了以下操作:

      • 创建数据库连接。
      • 执行数据库查询,将结果存储在Pandas DataFrame中。
      • 获取当前日期。
      • 构建邮件内容,包括主题、发件人、收件人和查询结果的HTML表格。
      • 使用SMTP库发送邮件。
    • 您可以选择使用定时任务来定期执行查询和发送邮件,根据需要取消注释并配置定时发送的时间。

    结论

    通过以上步骤,您现在可以轻松自动化发送数据库查询结果邮件。这个教程向您展示了如何使用Python编程语言和一些常见的库来完成这项任务。不再需要手动操作,定时任务将帮助您按计划发送数据报告,提高工作效率。

    如果您的工作需要频繁处理数据库查询并发送结果,这个自动化过程将为您节省大量时间和精力,使您能够更专注于其他重要的任务。

    希望这个教程对您有所帮助,让您的工作更加高效和便捷!

  • 如何将CSV文件转换为Excel格式:简单教程

    如何将CSV文件转换为Excel格式:简单教程

    在日常工作中,我们经常需要处理各种数据文件,其中CSV(逗号分隔值)文件是常见的一种格式。CSV文件具有简单的结构,但有时我们需要将其转换为更易于管理和共享的格式,比如Excel。今天,我将向您展示如何将CSV文件转换为Excel格式,以便您能够更方便地处理和分析数据。

    起始故事

    您是否曾经在处理数据时遇到过这样的情况:您有一堆CSV文件,需要将它们转换为Excel格式,但又不想手动一个一个去操作?正是因为这个问题,我才决定编写这篇教程,为您提供一个简单而高效的解决方案。

    步骤一:准备CSV文件

    首先,确保您已经准备好要转换的CSV文件。这些文件可以位于您的计算机上的任何位置,只需记住它们的路径或将它们放在同一个文件夹中以便于管理。

    步骤二:使用Python进行转换

    我们将使用Python编程语言来执行这个任务。如果您还没有安装Python,可以前往官方网站(https://www.python.org/)下载并安装。接下来,按照以下步骤进行操作:

    步骤2.1:导入必要的库

    在Python中,我们使用Pandas库来处理数据。请确保您已经安装了Pandas库。如果没有安装,可以使用以下命令来安装:

    pip install pandas

    然后,让我们编写Python代码来执行转换操作:

    import glob
    import os
    import pandas as pd
    
    # 获取当前目录下所有CSV文件路径
    csv_files = glob.glob("*.csv")
    
    # 遍历每个CSV文件
    for csv_file in csv_files:
        # 获取CSV文件名(不包含扩展名)
        file_name = os.path.splitext(csv_file)[0]
    
        # 读取CSV文件并提取第1列和第2列的数据
        try:
            data = pd.read_csv(csv_file, encoding='utf-8')
        except UnicodeDecodeError:
            try:
                data = pd.read_csv(csv_file, encoding='gbk')
            except:
                print(f"无法读取CSV文件:{csv_file},请检查编码方式。")
                continue
    
        m_column = data.iloc[:, 1]  # 第2列的索引为1
        am_column = data.iloc[:, 0]  # 第1列的索引为0
    
        # 创建一个新的DataFrame来保存提取的数据
        new_data = pd.DataFrame({"手机号": am_column, "姓名": m_column})
    
        # 去除重复数据,保持每行对应关系
        new_data = new_data.drop_duplicates()
    
        # 删除手机号为空的行
        new_data = new_data.dropna(subset=["手机号"])
    
        # 将数据保存到新的xlsx文件中,文件名与所读取的CSV文件名一致
        output_file = f"{file_name}.xlsx"
        new_data.to_excel(output_file, index=False)
    
        print(f"已保存文件:{output_file}")

    步骤三:执行代码

    将以上代码复制并粘贴到Python环境中,然后执行它。代码将遍历当前目录下的所有CSV文件,将它们转换为Excel格式,并保存在同一目录下。文件名将与原始CSV文件相同,只是扩展名变为.xlsx。

    结论

    通过这个简单的Python脚本,您可以轻松将多个CSV文件转换为Excel格式,提高数据处理的效率。无需手动操作,只需准备好CSV文件,运行代码,即可完成转换任务。

    如果你有任何问题或需要更多帮助,请随时联系我。我将尽力为您提供支持和指导。

  • 如何选择高含金量的Python考试证书

    如何选择高含金量的Python考试证书

    嗨,大家好,我是王大神。随着Python编程的普及和应用领域的不断扩展,越来越多的人希望通过Python考试来证明自己的技能。但是,Python考试众多,如何选择一门含金量高的Python考试证书成为了许多人的困惑。在本文中,我将向你介绍如何选择一门高含金量的Python考试证书,以帮助你在职场中脱颖而出。

    为什么要考Python证书?

    在职场竞争日益激烈的今天,拥有一门高含金量的Python考试证书可以为你的职业发展增添不少亮点。以下是考Python证书的一些好处:

    • 提升就业竞争力:Python是一门热门的编程语言,许多企业都在寻找懂Python的人才。拥有Python证书可以让你在求职过程中脱颖而出。

    • 加薪机会:根据行业研究,懂Python的专业人士通常薪水较高。一些公司愿意支付更高的薪水来吸引擅长Python的员工。

    • 广泛应用领域:Python不仅在软件开发领域有广泛应用,还在数据科学、人工智能、机器学习等领域得到了广泛应用。拥有Python证书可以让你在多个领域都有机会。

    如何选择高含金量的Python考试证书

    步骤1:明确职业目标

    首先,你需要明确自己的职业目标。不同的职业领域可能对Python的要求不同,因此你需要根据自己的兴趣和职业规划来选择适合的Python考试证书。

    步骤2:研究不同证书

    现在市场上有许多不同的Python考试证书,如Python Institute的PCAP、Microsoft的MTA Python、Cisco的Python程式设计专家等。你可以通过查阅官方网站和考试大纲来了解每个证书的内容和难度。

    步骤3:考虑认可度和知名度

    选择一门被广泛认可和知名度高的Python证书是非常重要的。一些知名的技术公司和机构,如Microsoft、Cisco、Google等,提供的证书通常具有更高的含金量。

    步骤4:考虑难度和准备时间

    不同的Python证书难度不同,需要的准备时间也会有所不同。你需要根据自己的学习进度和时间来选择适合自己的证书。

    步骤5:考虑成本

    最后,考虑一下考试的成本。不同的Python证书考试费用各不相同,你需要确保自己的预算能够覆盖考试和学习材料的费用。

    结论

    选择一门高含金量的Python考试证书可以为你的职业生涯增添不少机会。通过明确职业目标、研究不同证书、考虑认可度和知名度、考虑难度和成本,你可以选择一门最适合自己的Python证书,为自己的职业发展铺平道路。

    扩展阅读

    查找帮助

    如果你需要进一步的帮助或咨询,可以查阅官方网站或参加培训课程。

    致谢

    感谢你阅读本文,希望这些信息对你在选择Python考试证书时有所帮助,祝你取得成功!

  • 如何轻松管理 Linux 系统的开机启动项:add_service 工具详解

    如何轻松管理 Linux 系统的开机启动项:add_service 工具详解

    嗨,各位 Linux 用户们!今天我要向大家介绍一款强大的命令行工具,它可以让你轻松管理系统的开机启动项,而无需手动编写繁琐的配置文件。有时候,我们需要一些简单而便捷的方式来处理系统管理的任务,而这个工具——add_service,将会成为你的得力助手。

    第一步:什么是 add_service?

    在 Linux 系统中,配置 systemd 服务以实现开机自启动是一项繁琐的任务。通常,我们需要创建服务文件、手动配置参数,然后执行一系列 systemctl 命令。这个过程对于新手来说可能会有一定的难度,而对于有经验的用户来说,也会感到有些烦人。

    add_service 的出现改变了这一切。这个小巧但功能强大的命令行工具可以帮助你便捷地添加 systemd 启动项,只需一行命令,无需手动编写配置文件。

    第二步:如何安装和使用 add_service?

    使用 add_service 非常简单。首先,你需要安装它,只需在终端中运行以下命令:

    pip3 install add_service

    接下来,你可以使用以下命令来添加一个 systemd 启动项:

    add_service xxx.sh/cmd [--user root(默认为 `whoami`)] [--name service_name] [--start]

    这些参数的含义如下:

    • xxx.sh/cmd:你想要启动的命令或脚本。
    • --user USER:执行脚本的用户,默认为当前用户。
    • --name NAME:服务的名称,默认为 add_service0.service。
    • --start:立即启动服务。

    第三步:示例演示

    让我们来看几个示例,以便更好地理解如何使用 add_service。

    示例一:开启一个简单的 HTTP 服务器

    假设你想在系统启动时自动运行一个 HTTP 服务器,将当前文件夹暴露在 80 端口。你可以使用以下命令:

    add_service "`which python3` -m http.server 80" --user root --name http_server

    这个命令会将一个使用 Python 启动的 HTTP 服务器添加到系统的启动项中,并将其命名为 http_server。

    示例二:运行自定义脚本

    如果你有一个自定义的脚本文件,比如 ssh_nat.sh,你可以使用以下命令:

    python -m add_service ssh_nat.sh

    这个命令将会使用默认的服务名称 ssh_nat.service 来添加你的脚本作为启动项。

    第四步:总结

    add_service 是一个强大而简单的命令行工具,它可以帮助你轻松管理 Linux 系统的开机启动项。无论你是新手还是经验丰富的用户,都可以从中受益。它让配置 systemd 服务变得如此容易,无需手动编辑配置文件或执行复杂的命令。

    如果你有类似的需求,不妨试试这个工具,它可能会成为你的日常系统管理的得力助手。

  • 如何充分利用Ubuntu 23.10 Mantic Minotaur的新功能

    如何充分利用Ubuntu 23.10 Mantic Minotaur的新功能

    在Ubuntu 23.10发布(Mantic Minotaur)之际,让我们一起探索这个全新版本的Ubuntu,了解其中的新功能和改进。无论你是个人用户还是企业用户,这些新功能都可能对你有所帮助。让我们深入了解Ubuntu 23.10的亮点。

    支持周期

    首先,让我们看一下这个版本的支持周期。Ubuntu 23.10将在发布后的9个月内提供支持,直到2024年7月。如果你需要更长期的支持,建议使用Ubuntu 22.04 LTS版本。这个周期确保了你在使用Ubuntu 23.10期间能够得到及时的更新和支持。

    更新的软件包

    Ubuntu 23.10带来了许多更新的软件包,让我们看看其中一些重要的更新:

    Linux内核

    这个版本包括了新的Linux内核6.5,带来了许多新功能。一些值得注意的上游更改包括:

    • Intel的“拓扑感知寄存器和电源管理胶囊接口”:这是一个提供更好电源管理功能的接口。
    • arm64权限间接扩展:这是一项设置特殊内存权限的技术。
    • RISC-V现在支持ACPI。
    • Loongarch架构现在支持同时多线程(SMT)。
    • 支持未接受的内存:这是一种安全的方式,用于接受主机分配的内存。
    • io_uring子系统现在可以将环和提交队列存储在用户空间内存中。
    • 可以在相同的挂载点下挂载一个文件系统,这在容器场景中非常有用。

    这些更新将为Linux系统带来更好的性能和功能。

    工具链升级

    Ubuntu 23.10还升级了工具链,包括:

    • GCC更新到了13.2.0版本。
    • binutils更新到了2.41版本。
    • glibc更新到了2.38版本。
    • Python默认版本为3.11.5,同时还提供了3.12.0候选版2。
    • LLVM默认版本为16,同时存档中提供了17版本。
    • Rust工具链默认版本为1.71。

    这些工具链的升级将有助于开发者在Ubuntu上构建更强大的应用程序。

    开放JDK

    除了OpenJDK 17,现在还提供了OpenJDK 21,虽然不用于软件包构建,但对于开发者来说,这是一个重要的更新。

    .NET

    .NET 7软件包已更新到7.0.110版本,而.NET 6软件包已更新到6.0.121版本。这将为.NET开发者提供更多的功能和改进。

    Golang

    Go语言已更新到1.21版本,所有的更改都可以在上游发布说明中找到。这对Go语言开发者来说是一个重要的升级。

    安全改进

    Ubuntu 23.10引入了一些安全改进,以增强系统的安全性。其中一个重要的改进是Ubuntu内核现在要求程序具有AppArmor配置文件才能使用非特权用户名称空间。这将影响构建沙盒或处理某些容器工作负载的程序。为了解决这个问题,你可以采取以下几种选择:

    • 为你的应用程序创建一个AppArmor配置文件,以限制其权限。
    • 在不使用非特权用户名称空间的情况下启动应用程序。
    • 临时关闭这个限制。
    • 永久关闭这个限制。

    这些改进将有助于提高系统的安全性,特别是在处理容器和沙盒应用程序时。

    Ubuntu桌面

    如果你是Ubuntu桌面用户,你也会注意到一些变化:

    安装程序和升级

    默认的Ubuntu桌面安装现在是精简版,但仍然提供了“扩展安装”选项,以便用户在首次启动之前安装LibreOffice和Thunderbird等应用程序。这个更精简的安装方式有助于提高性能和启动速度。

    此外,Ubuntu 23.10重新引入了支持ZFS的安装选项,这为你提供了更多的存储管理选择。未来的版本还将提供加密ZFS选项,以增强安全性。

    另一个引人注目的功能是TPM支持的全磁盘加密(FDE),这是一个实验性功能,旨在提供更高的安全性,尤其适用于企业环境。这个功能使用TPM来管理解密密钥,从而提供了更好的安全性。

    新的应用商店

    Ubuntu 23.10引入了全新的Ubuntu应用中心,取代了之前的Snap Store。这个应用中心是使用Flutter工具包从头开始编写的,提供了更好的性能和用户体验。此外,现在还有一个独立的固件更新应用程序,允许你在后台更新固件,而不需要持续运行完整的应用商店。

    GNOME更新

    Ubuntu 23.10还将GNOME桌面环境更新到最新的版本,包括许多新功能和修复。现在默认安装了GNOME时钟应用程序,并提供了更新的Ubuntu字体。

    更新的应用程序

    一些常用的应用程序也得到了更新,包括:

    • Firefox 117:现在是一个本地的Wayland应用程序,提高了性能和稳定性。
    • LibreOffice 7.6:带来了新的功能和改进。
    • Thunder

    bird 91:提供了更好的电子邮件和日历体验。

    • Rygel 0.40:用于DLNA和UPnP流媒体的服务。

    这些更新将带来更好的应用程序性能和功能。

    结语

    Ubuntu 23.10 Mantic Minotaur带来了许多令人兴奋的新功能和改进,无论你是个人用户还是企业用户,都会受益于这些更新。如果你希望尽快体验这些新功能,可以立即升级到这个版本。不过,请记住备份你的数据,以防万一。

    希望你享受使用这个全新版本的Ubuntu,并能够充分利用其中的新功能来提高你的工作效率和生活质量。如果你需要更多关于Ubuntu 23.10的信息,可以查看官方文档或社区论坛,以获取帮助和支持。祝你使用愉快!

  • Python数据库查询和邮件发送脚本

    Python数据库查询和邮件发送脚本

    假设你是一位数据分析师,每天早上需要查询公司数据库中的数据,并将结果发送给多位同事。在过去,你可能需要手动执行这些任务,但现在你可以通过编写Python脚本来自动完成这些工作。

    准备工作

    在开始之前,确保你已经完成以下准备工作:

    1. 安装必要的Python库:确保你已经安装了pandas、sqlalchemy和smtplib等必要的Python库。

    2. 配置数据库连接信息:将数据库连接信息(主机地址、端口、用户名、密码和数据库名称)保存在db_config字典中。

    3. 配置邮箱信息:将邮箱配置信息(SMTP服务器、SMTP端口、发件人邮箱、发件人密码以及接收人邮箱列表)保存在email_config字典中。

    优化Python脚本

    下面是如何优化Python脚本的步骤:

    1. 导入必要的库

    首先,导入脚本所需的库。

    import time
    import urllib
    import schedule
    import sqlalchemy
    import pandas as pd
    import smtplib
    from email.mime.text import MIMEText
    from email.mime.multipart import MIMEMultipart
    from datetime import datetime

    2. 配置数据库连接和邮箱信息

    将数据库连接和邮箱信息保存在相应的字典中,确保密码等敏感信息已进行编码,以防止特殊字符引发的问题。

    # 配置数据库连接
    db_config = {
        'host': '127.0.0.1',
        'port': 3306,
        'user': 'root',
        'password': urllib.parse.quote("your_password_here"),
        'database': 'databasename'
    }
    
    # 配置邮箱信息
    email_config = {
        'smtp_server': 'smtp.qq.com',
        'smtp_port': 465,
        'sender_email': '[email protected]',
        'sender_password': 'your_sender_password_here',
        'receiver_emails': ['[email protected]', '[email protected]']
    }

    3. 创建数据库查询和邮件发送函数

    创建一个函数 query_and_send_email(),该函数负责执行数据库查询和发送邮件的操作。在函数内部,你可以执行多个数据库查询并将结果添加到邮件正文中。

    def query_and_send_email():
        try:
            # 创建数据库连接
            engine = sqlalchemy.create_engine(
                f"mysql+pymysql://{db_config['user']}:{db_config['password']}@{db_config['host']}:{db_config['port']}/{db_config['database']}"
            )
    
            # 执行数据库查询,获取数据
            query_ak = "SELECT * FROM 表1"
            df_ak = pd.read_sql(query_ak, engine)
    
            query_bbc = "SELECT * FROM 表2"
            df_bbc = pd.read_sql(query_bbc, engine)
    
            query_bbd = "SELECT * FROM 表3"
            df_bbd = pd.read_sql(query_bbd, engine)
    
            # 获取当前日期
            current_date = datetime.now().strftime("%Y-%m-%d")
    
            # 构建邮件内容
            subject = f"数据库查询结果 - {current_date}"
            message = MIMEMultipart()
            message['Subject'] = subject
            message['From'] = email_config['sender_email']
            message['To'] = ', '.join(email_config['receiver_emails'])
    
            # 将数据添加到邮件正文中
            html_content = f"<h1>数据查询结果 - 统计及汇总-{current_date}</h1>" + df_ak.to_html() + "<br><br>" \
                            + f"<h1>数据查询结果 - 数据统计-{current_date}</h1>" + df_bbc.to_html()+ "<br><br>" +\
                            f"<h1>数据查询结果 - 注册统计(上月+上周+昨日+今日+7日+30日)-{current_date}</h1>" + df_bbd.to_html()
            message.attach(MIMEText(html_content, 'html'))
    
            # 发送邮件
            with smtplib.SMTP_SSL(email_config['smtp_server'], email_config['smtp_port']) as server:
                server.login(email_config['sender_email'], email_config['sender_password'])
                server.sendmail(email_config['sender_email'], email_config['receiver_emails'], message.as_string())
            print("邮件发送成功!")
        except Exception as e:
            print("发生错误:", e)

    4. 调用函数执行任务

    最后,调用 query_and_send_email() 函数执行数据库查询和邮件发送任务。如果你想要定时执行任务,可以使用 schedule 库来安排定时任务。

    # 调用函数直接执行发送
    query_and_send_email()
    
    # 如果需要定时执行任务,取消下面的注释
    # schedule.every().day.at("08:00").do(query_and_send_email)  # 每天早上8点发送
    
    # 循环执行定时任务
    # while True:
    #     schedule.run_pending()
    #     time.sleep(1)

    通过以上步骤,你可以轻松优化Python脚本,实现数据库查询和邮件发送的自动化操作,从而提高工作效率。

    结语

    本文介绍了如何优化Python脚本,实现数据库查询和邮件发送的自动化操作。通过合理配置数据库连接信息和邮箱信息,以及编写相应的函数,你可以轻松完成这些任务。希望本文对你在日常工作中的自动化需求有所帮助。

  • Stable Diffusion WebUI优质教程:让你的Intel硬件充分发挥潜力

    Stable Diffusion WebUI优质教程:让你的Intel硬件充分发挥潜力

    嗨,大家好!今天我要与大家分享一个令人兴奋的技术——Stable Diffusion WebUI,并告诉你如何在你的Intel硬件上运行它。如果你是一个喜欢尝试新技术的人,那么这篇文章将为你提供宝贵的信息。

    什么是Stable Diffusion WebUI?

    Stable Diffusion WebUI是一个令人印象深刻的技术,它让你能够在Intel CPU和GPU上运行,包括集成和独立显卡。这个项目目前处于预览支持阶段,正在积极开发中,欢迎来自社区的反馈和贡献。

    为什么要在Intel硬件上运行Stable Diffusion WebUI?

    你可能会问,为什么要选择在Intel硬件上运行Stable Diffusion WebUI?这是因为Intel® Distribution of OpenVINO™ toolkit为这个项目提供了支持,它能够提供卓越的性能。而在Windows系统上,为了达到最佳性能,你可以按照以下步骤来启动WebUI:

    1. 以管理员身份启动命令提示符。
    2. 切换到stable-diffusion-webui目录。
    3. 运行webui-user.bat。

    这将确保你获得最佳的WebUI性能。但要注意,目前OpenVINO加速脚本不支持一些功能,比如Hires Fix和其他自定义脚本。

    如何运行WebUI与OpenVINO

    现在让我们来看看如何在Linux和Windows上运行WebUI与OpenVINO。

    在Linux上运行

    如果你熟悉Automatic1111工作流程,你可以使用OpenVINOToolKit的一个分支,而不是Automatic1111,并按照以下步骤操作:

    1. 确保你的Python版本是3.10+。
    2. 创建一个虚拟环境并激活它。
      python -m venv sd_env
      source sd_env/bin/activate
    3. 克隆Stable Diffusion WebUI的GitHub仓库。
      git clone https://github.com/openvinotoolkit/stable-diffusion-webui.git
      cd stable-diffusion-webui
    4. 设置一些环境变量。
      export PYTORCH_TRACING_MODE=TORCHFX
      export COMMANDLINE_ARGS="--skip-torch-cuda-test --precision full --no-half"
    5. 启动WebUI。
      ./webui.sh

    在运行./webui.sh后,根据提供的指南使用OpenVINO自定义脚本。

    在Windows上运行

    在Windows上运行WebUI也相对简单。按照以下步骤操作:

    1. 下载并安装git和Python 3.10.6(记得勾选“Add to PATH”)。
    2. 克隆Stable Diffusion WebUI的GitHub仓库。
      git clone https://github.com/openvinotoolkit/stable-diffusion-webui.git
      cd stable-diffusion-webui
    3. 运行first-time-runner.bat和torch-install.bat。
    4. 安装完成后,启动一个管理员权限的命令提示符,并切换到stable-diffusion-webui目录。
    5. 运行webui-user.bat。

    和在Linux上一样,根据提供的指南使用OpenVINO自定义脚本。

    开启公共访问

    如果你想要启用公共访问,只需在COMMANLINE_ARGUMENTS变量中添加”–share –listen”参数(在Windows上,你可以通过更新webui-user.bat文件来实现这一点)。

    安装OpenVINO

    要在你的项目中使用OpenVINO,你需要进行安装。你可以选择从PyPi安装或从源代码构建。

    从PyPi安装

    现在,OpenVINO已经在OpenVINO prerelease包中提供了对torch.compile的支持。只需使用以下命令安装最新的prerelease包:

    pip install --pre openvino

    从源代码构建

    如果你想从源代码构建OpenVINO,可以按照提供的指南进行操作。

    已知问题

    在使用Stable Diffusion WebUI时,有一些已知问题需要注意:

    • 将采样方法更改为DPM++或Karras方法会重新编译模型,因为它对图形进行了一些修改。建议在性能测量中排除第一张图像生成所需的时间。
    • 目前,Regular Stable Diffusion 2.1在独立显卡上存在已知问题。建议使用Stable Diffusion 2.1-base版本。

    结束语

    这篇文章希望能够帮助你了解如何在你的Intel硬件上运行Stable Diffusion WebUI。这是一个令人兴奋的技术,可以为你的项目带来卓越的性能。如果你有任何问题或想要分享你的经验,请留下评论。

    最后,希望你能够享受使用Stable Diffusion WebUI,开启新的技术探索之旅!