MySQL数据库操作——创表,增删改查
# 建立连接
1 try: 2 # 获取连接 3 conn = MySQLdb.connect( 4 host='127.0.0.1', 5 user='root', 6 passwd='*', 7 port=3306, 8 charset='utf8', 9 ) 10 # 获取数据 11 cursor = conn.cursor() 12 except MySQLdb.Error as e: 13 print('Error: %s' % e)
# 建立数据库
# 插入名为news的数据库,编码格式为utf8 cursor.execute('CREATE DATABASE news character set utf8;')
# 建表
1 cursor.execute('CREATE TABLE `news` (' 2 '`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,' 3 '`title` VARCHAR(200) NOT NULL,' 4 '`centent` VARCHAR(20000) NOT NULL,' 5 '`created_at` DATETIME NULL,' 6 '`types` VARCHAR(10) NOT NULL,' 7 '`author` VARCHAR(20) NULL,' 8 '`view_count` INT DEFAULT 0,' 9 '`is_valid` SMALLINT DEFAULT 1) DEFAULT CHARSET "UTF8";')
# 增加数据
# 增加单条数据 sql = "INSERT INTO `news` (`title`, `centent`, `created_at`, `types`) VALUE('这个春天,她们光彩夺目','新闻内容',now(),'新闻');" cursor.execute(sql) conn.commit() cursor.close() conn.close() # 增加多条数据 sql = "INSERT INTO `news` (`title`, `centent`, `created_at`, `types`) VALUES('今天的头条,送给她们!','新闻内容',now(),'新闻')," \ "('乘公交致13人感染 研究:新冠在密闭空调车厢可传4.5米','新闻内容',now(),'新闻')," \ "('剧情狗血成这样,它凭什么收视率超《安家》?','新闻内容',now(),'娱乐')," \ "('宋慧乔陷入感染危机,前夫宋仲基不戴口罩露面,身处国外神态轻松','新闻内容',now(),'娱乐')," \ "('锡安太狠了!单挑KO热火悍将,直接把对手打回','新闻内容',now(),'体育')," \ "('詹姆斯,如果空场比赛我是不会打的,我为球迷而战','新闻内容',now(),'体育')," \ "('56只个股跨越牛熊分界线','新闻内容',now(),'财经')," \ "('你宅着,带火了这些行业','新闻内容',now(),'财经')," \ "('一个勤务保障队队长的“N”种身份','新闻内容',now(),'军事')," \ "('萨达姆超800架战机在手,为何却埋入黄沙?专家:高明之举','新闻内容',now(),'军事')," \ "('40强赛也能模拟?国足迪拜集训忙不停 5天2战提','新闻内容',now(),'百家')," \ "('一个勤务保障队队长的“N”种身份','新闻内容',now(),'百家')," \ "('国足迪拜“艰难”开练 一天两练将于3月20日回国','新闻内容',now(),'百家')," \ "('爱无疆|三峡集团资助的海外学子为中国加油','新闻内容',now(),'百家');;" cursor.execute(sql) conn.commit() cursor.close() conn.close()
# 删除数据
1 # 删除id为15的新闻数据—— 删除多条修改WHERE条件即可 2 sql = "DELETE FROM `news` WHERE id=15" 3 cursor.execute(sql) 4 conn.commit() 5 cursor.close() 6 conn.close()
# 修改数据
1 # 需修改多条,修改WHERE条件即可 2 sql="UPDATE `news` SET title='新闻标题' WHERE id=14" 3 cursor.execute(sql) 4 conn.commit() 5 cursor.close() 6 conn.close()
# 查询数据
# 查询一条数据——— id为1的数据 sql = 'SELECT * FROM `news` WHERE id=1 " cursor.execute(sql) rest = dict(zip([k[0] for k in cursor.description], cursor.fetchone())) print(rest) # 查询多条数据—— 查询所有新闻的types为'百家'的数据 sql = "SELECT * FROM `news` WHERE types=%s" cursor.execute(sql,('百家',)) list=[] for i in cursor.fetchall(): rest = dict(zip([k[0] for k in cursor.description], i)) list.append(rest) for a in list: print(a) cursor.close() conn.close()