python脚本实现循环更新数据库中字段值

####· 目标:实现循环更新数据库表中的某个字段的值,并且每一条数据中该字段的值是不同的

·解决步骤
  1. 首先安装mysql支持库,对python3及以上来说,需要安装 pymysql库
    方法很简单:pip install PyMySQL 即可
  2. 接下来就是代码实现:

需求是这样的:数据库字段需要更新的值不是一样的(可以理解为 某个文件下下面的文件名为数据库中该字段的值),因此需要获得文件夹下的所有文件名,再依次进行改值。
我这里有一个特殊的地方是,文件名和数据库中的某一个字段值是有联系的,因此我可以根据文件名来唯一确定我要更新的是哪一条数据。
具体代码如下:

import pymysql
import os
# 获得目录下所有的文件名
pic_name = os.listdir('../pic4')
# 获得上一层目录
path = os.path.abspath('..')
#连接数据库
db = pymysql.connect("localhost","root","password","databaseName")
#使用cursor()方法获得一个游标
cursor = db.cursor()
#循环遍历更改
for name in pic_name:
	name1 = name[:3]#根据具体需求的操作
	name2 = "MVST_"+num@根据具体需求的操作
	sql = "update databaseName set name1 = '%s' Where name2='%s';" % (name1,name2)
	try:
		cursor.execute(sql) #执行sql语句
		db.commit() #提交到数据库执行
	except:
		db.rollback() #发生错误后回滚
db.close() # 关闭数据库
· 总结:代码很短,但快速的实现了我想要的目标。也对用python语言操作mysql数据库有了了解,以后再遇到类似的问题应该可以很快解决。
Python编写一个长时间处理大量数据并写入数据库脚本,通常会涉及以下几个步骤: 1. **导入必要的库**: - `pandas`:用于数据处理,读取和操作数据集。 - `sqlite3` 或 `psycopg2`(对于PostgreSQL等关系型数据库):连接到SQL数据库并执行写入操作。 - `time` 或 `datetime`:用于控制写入间隔,避免一次性加载所有数据。 2. **数据预处理**: 使用Pandas DataFrame来清洗、整理和转换数据。 ```python import pandas as pd # 加载数据 data = pd.read_csv('input_data.csv') # 替换为你实际的数据文件路径 # 进行一些数据处理... data_processed = preprocess(data) ``` 3. **分批写入数据库**: 使用循环将数据分割成小块,并逐块写入数据库,防止内存溢出。 ```python def write_to_db(chunk): # 连接到数据库 conn = sqlite3.connect('your_database.db') # 如果是SQLite # 或 # conn = psycopg2.connect(database='your_database', user='...', password='...', host='...', port=...) # 创建游标对象 cursor = conn.cursor() # 执行插入语句 for index, row in chunk.iterrows(): # 数据表名和字段名替换为实际 insert_query = f"INSERT INTO your_table (column1, column2) VALUES ({row['column1']}, {row['column2']})" cursor.execute(insert_query) # 提交事务 conn.commit() # 关闭游标和连接 cursor.close() conn.close() # 将数据切分为适合内存大小的批次 batch_size = 1000 # 根据内存限制调整 for i in range(0, len(data_processed), batch_size): write_to_db(data_processed.iloc[i:i+batch_size]) ``` 4. **设置延时或定时**: 可能需要添加时间间隔(比如每写入一定量数据后暂停),防止因网络问题导致写入断。 ```python import time # 每写入一批数据后,等待一段时间再继续 time.sleep(5) # 调整这个数字以适应你的需求 ``` 5. **错误处理**: 考虑添加异常处理代码,以便在发生错误时记录日志并恢复到可继续的位置。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值