在最近的开发需求中,利用Pandas处理数据并整合计算生成一张Output结果表存入数据库中,后来同事要求Output表中添加主键id,想着自己在Navicat手动添加主键id也不是办法,因为是每周都要生成一张新的Output表,索性利用Python对数据库中的表添加主键id,方便快捷又省心
DROP TABLE IF EXISTS `Output`;
CREATE TABLE `Output` (
`Site` varchar(255) DEFAULT NULL,
`Material` varchar(255) DEFAULT NULL,
`Level` varchar(255) DEFAULT NULL,
`Quantity` int(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO `Output` VALUES ('A', '01-A123', '1', '12');
INSERT INTO `Output` VALUES ('A', '02-A456', '2', '5');
INSERT INTO `Output` VALUES ('B', '03-B789', '3', '18');
INSERT INTO `Output` VALUES ('B', '04-B741', '1', '25');
INSERT INTO `Output` VALUES ('C', '05-C852', '2', '21');
INSERT INTO `Output` VALUES ('C', '06-C963', '3', '100');
Output表(结果输出表)
# 对Output表添加主键
import pymysql
# 设置数据库连接信息:ip地址、端口号、用户名、密码、数据库名
db = pymysql.connect(host="127.0.0.1", port=3306, user="root", password="123456", database="test")
# 使用cursor()方法创建一个游标对象cur
cur = db.cursor()
# sql语句
sql = '''ALTER TABLE `%s` add column `id` int(10) not null auto_increment primary key first ''' % ('Output')
try:
# 使用execute()方法执行SQL语句
cur.execute(sql)
# 提交到数据库执行
db.commit()
print('Add primary key successfully.')
except Exception as e:
# 如果发生错误则回滚
db.rollback()
print(str(e))
finally:
# 关闭数据库连接
db.close()
结果展示:


![[Work Summary] 使用Python对数据库中的表添加主键id [Work Summary] 使用Python对数据库中的表添加主键id](http://www.mshxw.com/aiimages/31/984378.png)
