python操作mysql

来源:互联网 发布:怎么查看计算机端口 编辑:程序博客网 时间:2024/05/17 08:55
# -*- coding: UTF-8 -*-import MySQLdb as mdbimport mathimport sysimport randomcon = 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

0 0
原创粉丝点击