python操作mysql

本文介绍了一个使用 Python 对 MySQL 数据库进行操作的例子,包括创建表、两种插入数据的方法、查询特定条件的数据并统计不重复记录的数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# -*- coding: UTF-8 -*-
import MySQLdb as mdb
import math
import sys
import random

con = mdb.connect('localhost', 'root', 'root', 'python_test')
with con:
    # 获取连接的cursor对象
    cur = con.cursor()

    # 建表(该表不存在时才会建立)
    table_name = "pytest"
    create_command = "CREATE TABLE IF NOT EXISTS " + table_name + "(id int auto_increment PRIMARY KEY , device_no VARCHAR(50), sumTime int(20))"
    cur.execute(create_command)

    # 插入的第1种方式(麻烦,但Java中采用这种方式)
    # 插入之前所有字段都要转成str类型
    # 虽然插入之前所有字段都要转成str,但在表中是什么类型还是由建表语句指定的(float还是float,int还是int)
    # 0-199
    for i in range(200):
        device_no = "zhxxxxx"+str(i)
        sumTime = random.randint(0, 1000)
        insert_command = "INSERT INTO " + table_name + "(device_no,sumTime) VALUES("\
                         +"'"+device_no+"'"+","\
                         +"'"+str(sumTime)+"'"\
                         +")"
        cur.execute(insert_command)

    # 插入的第2种方式(简洁)
    # 200-299
    for i in range(200,300):
        device_no = "zhxxxxx"+str(i)
        sumTime = random.randint(0, 1000)
        value =[device_no, sumTime]
        insert_command = "INSERT INTO " + table_name + "(device_no,sumTime) VALUES(%s,%s)"
        cur.execute(insert_command, value)

    # 遍历
    var = 20  # id
    select_command = "SELECT * FROM pytest  WHERE id >= " + str(var) +" order by sumTime  limit 300 "
    print select_command
    cur.execute(select_command)     # cur相当于java中的statement
    rows = cur.fetchall()
    print "第0行第1列元素为:%s" % rows[0][1]
    print "第0行第2列的sumTime类型为:%s" % type(rows[0][2])
    print "id>=20 的前300台设备号并按照sumTime排序:"

    for row in rows:
        id = row[0]
        device_no = row[1]
        sumTime = row[2]
        print "%d %s %d" % (id, device_no, sumTime)

    # 将所有设备号放入IDList
    # 开始时想直接创建一个set,在遍历rows过程中就完成去重,后来失败,所以先创建list,再转成set
    IDList = []
    for row in rows:
        if row[1] == None:     # 如果该字段device_no为Null,则不加入set
            continue
        else:
             IDList.append(row[1])   # device_no

    # 对设备号去重
    IDSet = set(IDList)
    IDLen = IDSet.__len__()
    print "不重复的设备号为:"
    # for device_no in IDSet:         # 遍历set
        # print device_no

    cur.close()
con.close()

代码使用方法:先在本地建立名为python_test的数据库,将上述代码复制到pycharm或者eclipse,运行结束后会自动在该数据库下生成一个表pytest,该表有三个字段id,device_no,sumTime,其中id字段为主键,int类型,自增;device_no表示设备号,varchar类型,sumTime表示总时间,int类型。
代码完成以下功能:
建表
两种方式的插入
查询
统计所有不重复的设备号放入一个set

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值