目录:
[显示]
近期调整站点结构,需要将图片路径由原来的/var/www/upload更换为现在的/opt/pic/pic_upload,由于我们图片路径是存储在MySQL数据库中的,那么在更换文件目录之后,还需要将数据库中的路径做相应的修改。因为图片比较多,显然不能手工修改了,所以我们使用Python写了一个小脚本,轻松解决了这个问题。
分析:数据库中现在的记录格式为:/var/www/upload/xxx... 需要修改成这样:/opt/pic/pic_upload/xxx... ,那么,要做的可以分解为两个部分,一个是将路径做修改,路径后段是一样的,只需要改写前面几个字符,python的字符串截取可以很好的胜任这个任务,另外一个就是编写SQL的UPDATE语句,对数据库进行更新。
这里使用MySQLdb库。
安装MySQLdb库
安装pip:
apt install python-pip
pip install --upgrade pip
安装MySQLdb模块:
apt install libmysqlclient-dev #否则会出现EnvironmentError: mysql_config not found
pip install mysql-python
apt install python-pip
pip install --upgrade pip
安装MySQLdb模块:
apt install libmysqlclient-dev #否则会出现EnvironmentError: mysql_config not found
pip install mysql-python
脚本代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect("192.168.1.100","root","dbpasswd","pic",3306) # 使用cursor()方法获取操作游标 cursor = db.cursor() # 使用execute方法执行SQL语句 cursor.execute("SELECT id,path FROM t_pic") # 使用 fetchone() 方法获取一条数据 # 使用 fetchall() 方法获取所有数据 data = cursor.fetchall() for my_tuple in data: num = my_tuple[0] path = my_tuple[1] if path[:15] == "/var/www/upload/": f_path = "/opt/pic/pic_upload/" + path[15:] sql ='UPDATE t_pic SET path="%s" WHERE id=%s' % (f_path,num) try: cursor.execute(sql) db.commit() except: db.rollback() print sql # 关闭数据库连接 db.close() print "图片地址转换完毕!" |
转载请注明:轻风博客 » 使用Python批量更新MySql数据库字段值