2024-08-29

itertools 是 Python 的内置模块,提供了一系列用于创建复杂迭代器的函数。这些复杂迭代器可以用于各种编程任务,如排序、数据处理、组合生成等。

以下是一些常用的 itertools 函数及其使用示例:

  1. count(start, [step]):创建一个迭代器,生成从 start 开始的连续整数,可选的 step 指定增量。



for i in itertools.count(10, 2):
    print(i)
    if i > 20:
        break
  1. cycle(iterable):创建一个迭代器,生成一个无限循环的重复 iterable 中的元素。



for i in itertools.cycle('ABC'):
    print(i)
    if i == 'C':
        break
  1. repeat(object[, times]):创建一个迭代器,重复生成 object,可选的 times 参数指定重复次数。



for i in itertools.repeat('A', 5):
    print(i)
  1. combinations(iterable, r):创建一个迭代器,生成 iterable 中所有长度为 r 的连续组合。



for i in itertools.combinations('ABC', 2):
    print(i)
  1. permutations(iterable, r=None):创建一个迭代器,生成 iterable 中所有长度为 r 的排列。



for i in itertools.permutations('ABC', 2):
    print(i)
  1. groupby(iterable[, key]):创建一个迭代器,生成从 iterable 中分组的元素。



data = ['foo', 'foo', 'bar', 'bar', 'bar', 'foo', 'foo']
for key, group in itertools.groupby(data):
    print(key, list(group))
  1. chain(*iterables):创建一个迭代器,顺序地连接多个迭代器。



for i in itertools.chain('ABC', 'DEF'):
    print(i)
  1. compress(iterable, selectors):创建一个迭代器,生成 iterable 中当 selectorsTrue 时的元素。



for i in itertools.compress('ABC', [True, False, True]):
    print(i)
  1. dropwhile(predicate, iterable):创建一个迭代器,丢弃 iterablepredicateTrue 的元素。



for i in itertools.dropwhile(lambda x: x<5, [1, 4, 6, 4, 1]):
    print(i)
  1. takewhile(predicate, iterable):创建一个迭代器,只要 predicateTrue 就从 iterable 中生成元素。



for i in itertools.takewhile(lambda x: x<5, [1, 4, 6, 4, 1]):
    print(i)

这些函数可以用于各种复杂的迭代需求,并提供了一种处理序列数据的创新和高效方式。

2024-08-29



import sqlite3
 
# 连接到数据库,如果数据库不存在,则会被创建
conn = sqlite3.connect('example.db')
 
# 创建一个Cursor对象
cursor = conn.cursor()
 
# 执行一条SQL语句,创建user表
cursor.execute('CREATE TABLE IF NOT EXISTS user (id VARCHAR(20) PRIMARY KEY, name VARCHAR(20))')
 
# 关闭Cursor对象
cursor.close()
 
# 使用数据库
# ...
 
# 提交事务
conn.commit()
 
# 关闭连接
conn.close()

这段代码展示了如何使用sqlite3模块来连接数据库、创建表格、以及关闭数据库连接。在实际应用中,你可以在创建表格后执行插入(INSERT)、查询(SELECT)、更新(UPDATE)和删除(DELETE)操作。

2024-08-29

要使用Python调用百度文心一言API,你需要先注册百度开发者账号,获取API Key和Secret Key。以下是一个简单的Python示例,使用requests库调用百度文心一言的API:

首先,安装requests库(如果尚未安装):




pip install requests

然后,使用以下Python代码调用百度文心一言:




import requests
 
def call_baidu_wenxin(query):
    # 替换以下API_KEY和SECRET_KEY为你的实际信息
    API_KEY = 'your_api_key'
    SECRET_KEY = 'your_secret_key'
    
    # 获取access_token
    token_url = 'https://aip.baidubce.com/oauth/2.0/token'
    params = {
        'grant_type': 'client_credentials',
        'client_id': API_KEY,
        'client_secret': SECRET_KEY
    }
    response = requests.post(token_url, params=params)
    if response.ok:
        access_token = response.json().get('access_token')
        
        # 调用文心一言API
        wenxin_url = 'https://aip.baidubce.com/rpc/2.0/ai_custom'
        params = {
            'query': query,
            'access_token': access_token
        }
        headers = {
            'Content-Type': 'application/json'
        }
        response = requests.post(wenxin_url, json=params, headers=headers)
        if response.ok:
            result = response.json().get('result')
            return result
        else:
            return "调用失败"
    else:
        return "获取token失败"
 
# 使用示例
query = "你好,文心一言"
response = call_baidu_wenxin(query)
print(response)

确保替换your_api_keyyour_secret_key为你的实际API Key和Secret Key。

这段代码首先获取access\_token,然后使用该token调用百度文心一言的API。调用成功后,它会返回文心一言对于输入query的回答。

2024-08-29



import psycopg2
 
# 连接到数据库
conn = None
try:
    # 连接参数为:用户名、密码、数据库名、主机地址、端口号
    conn = psycopg2.connect(
        dbname="your_dbname",
        user="your_username",
        password="your_password",
        host="your_host",
        port="your_port"
    )
 
    # 创建一个游标对象
    cursor = conn.cursor()
 
    # 编写SQL查询
    cursor.execute("SELECT version();")
 
    # 获取查询结果
    db_version = cursor.fetchone()
 
    print(f"Database version: {db_version}")
 
    # 关闭游标
    cursor.close()
 
# 捕获异常并确保关闭连接
except psycopg2.Error as e:
    print("数据库连接失败:", e)
finally:
    if conn is not None:
        conn.close()
        print("数据库连接已关闭。")

这段代码展示了如何使用psycopg2模块连接PostgreSQL数据库,并执行一个简单的查询。在实际应用中,需要替换your_dbname, your_username, your_password, your_host, your_port为实际的数据库连接信息。

2024-08-29

要在Python中读取Excel内容并存入字典,可以使用pandas库。要将字典内容写入Excel文件,同样可以使用pandas

首先安装pandasopenpyxl(用于处理Excel文件):




pip install pandas openpyxl

以下是读取Excel内容并存入字典以及将字典内容写入Excel文件的示例代码:




import pandas as pd
 
# 读取Excel内容并存入字典
def read_excel_to_dict(file_path):
    df = pd.read_excel(file_path)
    return df.to_dict()
 
# 将字典内容写入Excel文件
def write_dict_to_excel(data_dict, file_path):
    df = pd.DataFrame(data_dict)
    df.to_excel(file_path, index=False)
 
# 示例使用
# 读取Excel
excel_file_path = 'example.xlsx'
data_dict = read_excel_to_dict(excel_file_path)
print(data_dict)
 
# 写入Excel
output_file_path = 'output.xlsx'
write_dict_to_excel(data_dict, output_file_path)

请确保example.xlsxoutput.xlsx文件路径正确,且当前路径有写入权限。以上代码假设Excel文件中的数据可以直接转换为字典,每个列名映射到一个键,每行映射到一个值列表。如果Excel文件格式更复杂,可能需要进一步处理数据。

2024-08-29

Python-Eureka-Client是一个用Python编写的Eureka客户端库,它允许Python应用程序与Spring Cloud Eureka服务器进行交互。以下是如何使用Python-Eureka-Client进行服务注册和服务发现的简单示例。

首先,确保安装了eureka-client-python库:




pip install eureka-client-python

以下是一个简单的服务注册和服务发现的例子:




from eureka_client.eureka_client import EurekaClient
from eureka_client.instance_info import InstanceInfo
 
# 创建EurekaClient实例,指定Eureka服务器的URL
eureka_client = EurekaClient(
    eureka_server="http://localhost:8761/eureka/",
    instance_info=InstanceInfo(
        appname="my-python-service",
        ip_address="127.0.0.1",
        port=8000,
        home_page_url="http://localhost:8000/",
        health_check_url="http://localhost:8000/healthcheck",
        secure_port=443,
        secure_healthcheck_url="https://localhost:8000/healthcheck"
    )
)
 
# 注册服务
eureka_client.register()
 
# 获取服务列表
services = eureka_client.get_services("my-service")
 
# 打印服务信息
for service in services:
    print(service)
 
# 注销服务
eureka_client.cancel()

这段代码展示了如何创建一个EurekaClient实例,注册服务,获取服务列表,以及注销服务。这是一个与Spring Cloud Eureka进行交互的Python应用程序的简单示例。

2024-08-29

以下是使用Python连接MySQL和PostgreSQL数据库的简单示例代码。

连接MySQL数据库:




import mysql.connector
 
# 连接MySQL数据库
config = {
    'user': 'username',
    'password': 'password',
    'host': 'localhost',
    'database': 'database_name',
    'raise_on_warnings': True
}
 
try:
    connection = mysql.connector.connect(**config)
    if connection.is_connected():
        print("连接成功!")
        # 在此处执行数据库操作
        cursor = connection.cursor()
        cursor.execute("SELECT VERSION()")
        version = cursor.fetchone()
        print("数据库版本: ", version)
        cursor.close()
except mysql.connector.Error as error:
    print("发生错误: ", error)
finally:
    if connection.is_connected():
        connection.close()
        print("数据库连接已关闭。")

连接PostgreSQL数据库:




import psycopg2
 
# 连接PostgreSQL数据库
config = {
    'user': 'username',
    'password': 'password',
    'host': 'localhost',
    'database': 'database_name',
    'port': '5432'
}
 
try:
    connection = psycopg2.connect(**config)
    if connection.is_connected():
        print("连接成功!")
        # 在此处执行数据库操作
        cursor = connection.cursor()
        cursor.execute("SELECT version()")
        version = cursor.fetchone()
        print("数据库版本: ", version)
        cursor.close()
except psycopg2.Error as error:
    print("发生错误: ", error)
finally:
    if connection.is_connected():
        connection.close()
        print("数据库连接已关闭。")

这些示例展示了如何使用Python连接MySQL和PostgreSQL数据库,并执行简单的数据库版本查询。在实际应用中,你需要根据自己的数据库配置、需求来修改连接参数和执行的SQL语句。

2024-08-29



import sqlite3
 
# 连接到数据库(如果不存在则在当前目录创建)
conn = sqlite3.connect('example.db')
 
# 创建一个Cursor对象
cursor = conn.cursor()
 
# 执行一条SQL语句,创建user表
cursor.execute('CREATE TABLE IF NOT EXISTS user (id VARCHAR(20) PRIMARY KEY, name VARCHAR(20))')
 
# 执行一条SQL语句,插入一条记录
cursor.execute("INSERT INTO user (id, name) VALUES ('1', 'Michael')")
 
# 执行一条SQL语句,查询user表的所有记录
cursor.execute('SELECT * FROM user')
 
# 使用fetchall获取查询结果集
values = cursor.fetchall()
 
# 打印查询结果
for row in values:
    print(row)
 
# 关闭Cursor对象
cursor.close()
 
# 提交事务
conn.commit()
 
# 关闭数据库连接
conn.close()

这段代码展示了如何使用sqlite3模块进行数据库操作,包括创建数据库、创建表格、插入数据、查询数据和关闭数据库连接。在实际应用中,应该添加异常处理来确保即使在出错的情况下也能正确关闭数据库连接。

2024-08-29



import sqlite3
 
# 连接到SQLite数据库
# 数据库文件是test.db,如果文件不存在,会自动在当前目录创建:
conn = sqlite3.connect('test.db')
cursor = conn.cursor()
 
# 创建一个表,如果表已存在,则忽略:
cursor.execute('''CREATE TABLE IF NOT EXISTS records
               (id INTEGER PRIMARY KEY, content TEXT UNIQUE)''')
 
# 插入数据,如果数据已存在(即content字段唯一约束违反),则忽略:
cursor.execute("INSERT OR IGNORE INTO records (content) VALUES (?)", ("example",))
cursor.execute("INSERT OR IGNORE INTO records (content) VALUES (?)", ("example",))
cursor.execute("INSERT OR IGNORE INTO records (content) VALUES (?)", ("another",))
 
# 查询并打印结果:
for row in cursor.execute("SELECT id, content FROM records ORDER BY id ASC"):
    print(row)
 
# 提交事务并关闭连接:
conn.commit()
conn.close()

这段代码演示了如何使用SQLite的INSERT OR IGNORE语法来处理插入数据时的去重问题。代码首先创建了一个名为records的表,其中包含一个content字段,该字段具有唯一性约束。然后,代码尝试插入两条相同的数据,但由于唯一性约束,第二条会被忽略。最后,代码查询并打印出结果。

2024-08-29



from torchdata.datapipes.iter import IterableWrapper
from torch.utils.data import Dataset
import sqlite3
 
class SQLiteDataset(Dataset):
    def __init__(self, database, query):
        self.database = database
        self.query = query
        self.conn = sqlite3.connect(self.database, isolation_level=None)
        self.cur = self.conn.cursor()
        self.cur.execute(self.query)
        self.data = self.cur.fetchall()
 
    def __len__(self):
        return len(self.data)
 
    def __getitem__(self, idx):
        return self.data[idx]
 
    def __iter__(self):
        return IterableWrapper(self.data)
 
    def __del__(self):
        self.conn.close()
 
# 使用示例
database_path = 'path_to_your_sqlite_database.db'
query = 'SELECT * FROM your_table_name'
dataset = SQLiteDataset(database_path, query)
 
# 现在可以像使用其他PyTorch Dataset一样使用 `dataset`

这个示例代码定义了一个名为SQLiteDataset的类,它允许用户使用SQL查询从SQLite数据库中创建一个可迭代的数据集。这个类实现了PyTorch Dataset 的基本方法,包括初始化连接数据库、执行查询、获取长度和数据项。在实例化SQLiteDataset时,只需传入数据库路径和要执行的SQL查询字符串。这个类在实例化后可以像其他PyTorch数据集一样使用,例如用于模型的数据提供。