我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python操作mysql之插入数据

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python操作mysql之插入数据

之前有写过一篇python查询mysql数据的文章,今天写通过python插入数据到mysql数据库。


1.先建库,建表,建用户

mysql> CREATE DATABASE tda DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

mysql> use top_ten

mysql> 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-28
Author: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"


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python操作mysql之插入数据

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL数据库(五)插入操作

前提要述:参考书籍《MySQL必知必会》《MySQL必知必会》是先讲了查询,但是没有记录就无法查询,所以先将如何添加数据。表已经知道怎么创建了,随便创两张。5.1 插入数据MySQL使用 INSERT来插入(或添加)行(记录)到数据库表中。插入可用以下几种方式
MySQL数据库(五)插入操作
2016-04-14

MySQL怎么实现数据插入操作

今天小编给大家分享一下MySQL怎么实现数据插入操作的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、方法分类二、具体方法使
2023-07-05

python 插入mysql数据

建立数据库连接def create_db_connect(): """ brief info for: create_db_connect 建立数据库链接 Args: Retu
2023-01-31

python实现MySQL 数据库表格创建 数据插入及获取插入ID操作教程

目录创建表格检查表格是否存在主键插入数据到表格插入多行获取插入的ID创建表格要在mysql中创建表格,请使用"CREATE TABLE"语句。确保在创建连接时定义了数据库的名称。示例创建一个名为 "customers" 的表格:im
python实现MySQL 数据库表格创建 数据插入及获取插入ID操作教程
2023-11-11

Python练习之操作MySQL数据库

目录一、创建mysql数据表三、向MySQL表中插入数据三、查询MySQL中的数据总结文章介绍内容:操作MySQL数据库:创建MySQL数据表;向表中插入记录;其他数据库操作。面试题:如何创建MySQL数据表?如何向MySQL表中插
2022-06-13

MySQL数据库操作DML 插入数据,删除数据,更新数据

目录DML介绍数据插入数据修改数据删除DML介绍DML是指数据操作语言,英文全称是Data Manipulation Language,用来对数据库中表的数据记录进行更新。关键字:插入insert删除delete更新update数据
2022-07-11

MySQL实现数据插入操作的示例详解

目录一、方法分类二、具体方法三、实例(1)常规插入(2)从另一个表导入(3)插入时数据重复四、注意事项(1)不写字段名,需要填充自增ID(2)按字段名填充,可以不录入id其余注意事项使用mysql插入数据时,可以根据需求场景选择合适的插入语
2023-02-21

编程热搜

目录