Python操作mysql之插入数据
发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,之前有写过一篇python查询mysql数据的文章,今天写通过python插入数据到mysql数据库。1.先建库,建表,建用户mysql> CREATE DATABASE tda DEFAULT CH
千家信息网最后更新 2025年01月22日Python操作mysql之插入数据
之前有写过一篇python查询mysql数据的文章,今天写通过python插入数据到mysql数据库。
1.先建库,建表,建用户
mysql> CREATE DATABASE tda DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;mysql> use top_tenmysql> create table log (id int PRIMARY KEY AUTO_INCREMENT, ip char(20), url char(30), status int, total int) charset=utf8;mysql> create user 'bob'@'10.200.42.52' identified by 'talent';mysql> desc log;+--------+-------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+--------+-------------+------+-----+---------+----------------+| id | int(11) | NO | PRI | NULL | auto_increment || ip | char(20) | YES | | NULL | || url | char(30) | YES | | NULL | || status | int(11) | YES | | NULL | || total | int(11) | YES | | NULL | |+--------+-------------+------+-----+---------+----------------+mysql> grant all on top_ten.* to bob@localhost identified by 'talent';mysql> flush privileges;
2.在python下插入语句做下测试
>>> import MySQLdb>>> db = MySQLdb.connect(host='localhost',user='bob',passwd='talent',db='top_ten',port=3306, charset='utf8')>>> db.autocommit(True)>>> cursor = db.cursor()>>> sql = "insert into log(ip, url, status, total) values('1.1.1.1', 'http', '200', '66')">>> cursor.execute(sql)1L>>> sql = "insert into log(ip, url, status, total) values('2.2.2.2', 'http', '200', '66')">>> cursor.execute(sql)1L#只能查询一条结果>>> cursor.execute('select * from log')1L>>> cursor.fetchone()(1L, u'1.1.1.1', u'http', 200L, 66L)#查询所有数据,然后一条条获取结果>>> cursor.execute('select * from log')2L>>> cursor.fetchmany()((1L, u'1.1.1.1', u'http', 200L, 66L),)>>> cursor.fetchmany()((2L, u'2.2.2.2', u'http', 200L, 66L),)>>> cursor.fetchmany()()#查询所有数据,一个元组显示所有结果>>> cursor.execute('select * from log')2L>>> cursor.fetchall()((1L, u'1.1.1.1', u'http', 200L, 66L), (2L, u'2.2.2.2', u'http', 200L, 66L))
3.插入脚本
[root@python ~]# cat mysql_insert.py#!/usr/bin/env python# -*- coding: utf-8 -*-'''Date:2017-03-28Author:Bob''' import MySQLdb def mysql_insert(): #Open the database connection db = MySQLdb.connect(host='localhost',user='bob',passwd='talent',db='top_ten',port=3306, charset='utf8') #Automatic submission db.autocommit(True) #Gets the operation cursor cursor = db.cursor() with open('access_log-20170217', 'r') as f: res = {} #Get ip, url, status for line in f.readlines(): line = line.split(' ') ip = line[0] url = line[6] status = line[8] #print ip, url, status #ip, url, status as key, each time plus 1 res[(ip, url, status)] = res.get((ip, url, status),0)+1 #Generate a list res_list = [(k[0],k[1],k[2],v) for k,v in res.iteritems()] # Print the top ten lines #for k in sorted(res_list,key=lambda x:x[3],reverse=True)[:10]: #print k #SQL statement inserted for i in res_list: #print i sql = "insert into log(ip, url, status, total) values('%s', '%s', '%s', '%s')" %(i[0], i[1], i[2], i[3]) try: #Execute the SQL statement cursor.execute(sql) except Exception as e: print "Error: ", e #Commit db.commit() #Close the cursor cursor.close() #Close the database connection db.close() if __name__ == '__main__': mysql_insert()
4.执行脚本
[root@python ~]# python mysql_insert.py
5.查询验证
mysql> select * from log;+----+----------------+---------------------------+--------+-------+| id | ip | url | status | total |+----+----------------+---------------------------+--------+-------+| 1 | 1.1.1.1 | http | 200 | 66 || 2 | 2.2.2.2 | http | 200 | 66 || 3 | 10.200.56.80 | /api/sshpasswd/ | 200 | 1 || 4 | 10.201.201.82 | /business/add | 200 | 20 || 5 | 10.200.56.80 | / | 403 | 1 || 6 | 10.200.56.80 | /account/login?next=%2F | 200 | 1 || 7 | 10.200.56.80 | /icons/apache_pb.gif | 200 | 1 || 8 | 10.200.56.80 | /icons/unknown.gif | 200 | 1 || 9 | 127.0.0.1 | / | 403 | 1 || 10 | 10.200.56.80 | /account/login_auth | 200 | 1 || 11 | 10.200.56.80 | /static/js/echarts.min.js | 304 | 1 || 12 | 10.200.56.80 | /business/collist | 200 | 2 || 13 | 10.200.56.80 | /business/chlist | 200 | 1 || 14 | 10.200.56.80 | / | 200 | 1 || 15 | 10.200.56.80 | /icons/text.gif | 200 | 1 || 16 | 10.200.56.80 | /icons/poweredby.png | 200 | 1 || 17 | 10.200.42.50 | /host/addscan | 200 | 1 || 18 | 10.200.56.80 | /icons/blank.gif | 200 | 1 || 19 | 10.200.56.80 | / | 302 | 1 || 20 | 10.200.56.80 | /icons/back.gif | 200 | 1 || 21 | 10.200.56.80 | /account/is_activate | 200 | 1 || 22 | 10.200.56.80 | /favicon.ico | 404 | 4 || 23 | 61.159.140.123 | /favicon.ico | 404 | 4 |+----+----------------+---------------------------+--------+-------+23 rows in set (0.00 sec)
6.测试数据
61.159.140.123 - - [16/Feb/2017:14:45:39 +0800] "GET /api/sshpasswd/ HTTP/1.1" 200 1338 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0"61.159.140.123 - - [16/Feb/2017:14:45:39 +0800] "GET /icons/text.gif HTTP/1.1" 200 229 "http://10.200.42.52/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0"61.159.140.123 - - [16/Feb/2017:14:45:39 +0800] "GET /icons/unknown.gif HTTP/1.1" 200 245 "http://10.200.42.52/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0"
数据
查询
结果
脚本
测试
数据库
文章
条条
用户
语句
utf-8
验证
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
java 数据库 书
数据库与计算机制图的关系
网络安全法全文pdf下载
高青服装库存软件开发
如何做好网络技术项目实施
北京华为服务器续保费用
网络安全名师讲堂
liunx下达梦数据库安装
管理多个服务器工具
科技服务互联网平台
数据库三个基本概念及其关系
灿忠软件开发有限公司招聘
手机添加网络安全性
国内网络安全公司市值排名
河南周口网络安全
长城服务器管理默认密码
数据库表年龄怎么建立
麻花互联网科技
软件开发的风险保障怎么写
网络安全意识问题隐患
网络安全知识答题的答案是什么
天津网络技术转让市场价格
数据库审计销售许可证
常用文献数据库有哪些
国家信息网络安全管理
为什么进入游戏看不到服务器
上海移动城管软件开发公司
数据库leftjoin效果
学生校园网络安全防范知识
广东系统软件开发哪家可靠