python往数据库批量插入多条数据

1.需要定义构造函数(init),给实例属性赋值(包括host、port、user、password和database)
2.连接数据库
3.插入数据,先在数据库中建好表,并且添加好所需要的字段
4.数据生成表中所需的字段内容,并调用插入方法

# #!/usr/bin/python
# # -*- coding: UTF-8 -*-

lst_first=['赵', '钱', '孙', '李', '周', '吴', '郑', '王', '冯', '陈', '褚', '卫', '蒋', '沈', '韩', '杨', '朱', '秦', '尤', '许',
           '何', '吕', '施', '张', '孔', '曹', '严', '华', '金', '魏', '陶', '姜', '戚', '谢', '邹', '喻', '柏', '水', '窦', '章',
           '云', '苏', '潘', '葛', '奚', '范', '彭', '郎', '鲁', '韦', '昌', '马', '苗', '凤', '花', '方', '俞', '任', '袁', '柳',
           '酆', '鲍', '史', '唐', '费', '廉', '岑', '薛', '雷', '贺', '倪', '汤', '滕', '殷', '罗', '毕', '郝', '邬', '安', '常',
           '乐', '于', '时', '傅', '皮', '卞', '齐', '康', '伍', '余', '元', '卜', '顾', '孟', '平', '黄', '和', '穆', '萧', '尹',
           '姚', '邵', '堪', '汪', '祁', '毛', '禹', '狄', '米', '贝', '明', '臧', '计', '伏', '成', '戴', '谈', '宋', '茅', '庞',
           '熊', '纪', '舒', '屈', '项', '祝', '董', '梁']
lst_last=['明', '问', '力', '理', '尔', '点', '文', '几', '定', '本', '公', '特', '做', '外', '孩', '相', '西', '果', '走',
          '将', '月', '十', '实', '向', '声', '车', '全', '信', '重', '三', '机', '工', '物', '气', '每', '并', '别', '真', '打',
          '太', '新', '比', '才', '便', '夫', '再', '书', '部', '水', '像', '眼', '等', '体', '却', '加', '电', '主', '界', '门',
          '利', '海', '受', '听', '表', '德', '少', '克', '代', '员', '许', '稜', '先', '口', '由', '死', '安', '写', '性', '马',
          '光', '白', '或', '住', '难', '望', '教', '命', '花', '结', '乐', '色', '更', '拉', '东', '神', '记', '处', '让', '母',
          '父', '应', '直', '字', '场', '平', '报', '友', '关', '放', '至', '张', '认', '接', '告', '入', '笑', '内', '英', '军',
          '候', '民', '岁', '往', '何', '度', '山', '觉', '路', '带', '万', '男', '边', '风', '解', '叫', '任', '金', '快', '原',
          '吃', '妈', '变', '通', '师', '立', '象', '数', '四', '失', '满', '战', '远', '格', '士', '音', '轻', '目', '条', '呢',
          '病', '始', '达', '深', '完', '今', '提', '求', '清', '王', '化', '空', '业', '思']
school=['泉州五中','厦门双十','福州一中','培元中学','集美中学']

import pymysql          # 先pip install pymysql
import random
class DatabaseAcess:
    # 初始化属性(包括host、port、user、password和database)
    def __init__(self):
        self.__db_host='localhost'      # 属性应私有
        self.__db_port=3306             # 注意,端口是int类型,不能有引号,否则会报错
        self.__db_user='root'
        self.__db_password='123456'
        self.__db_database='test'       # 数据库名

    # 连接数据库
    def isConnection(self):
        self.__db=pymysql.connect(
            host=self.__db_host,
            port=self.__db_port,
            user=self.__db_user,
            password=self.__db_password,
            database=self.__db_database,
            charset='utf8'
        )

    # 插入数据,先在数据库中建好表,并且添加好所需要的字段
    def linesinsert(self,student_name,student_age,school_name,tel,height,sex,order_no):
        try:
            self.isConnection()             # 连接数据库

            global cursor                   # 创建游标
            cursor=self.__db.cursor()

            # sql语句中,表名需要用引号引起来,否则会报错
            sql='insert into `order`(student_name,student_age,school_name,tel,height,sex,order_no) value (%s,%s,%s,%s,%s,%s,%s)'        # sql插入语句
            cursor.execute(sql,(student_name,student_age,school_name,tel,height,sex,order_no))      # 执行sql命令

        except Exception as e:
            print e         # 打印报错原因

        finally:
            cursor.close()          # 关闭游标
            self.__db.commit()      # 提交
            self.__db.close()       # 关闭数据库连接

    # 数据生成表中所需的字段内容,并调用插入方法
    def data_updata(self):
        #stu_id=random.randint(1,100)
        na1=random.choice(lst_first)
        na2=random.choice(lst_last)
        na3=random.choice(lst_last)
        stu_name=na1+na2+na3
        stu_age=random.randint(13,18)
        sch_name=random.choice(school)
        telephone=str(random.randint(13300000000,19999999999))
        stu_height=random.randint(130,190)
        stu_sex=random.randint(0,1)
        orderno=random.randint(7100000,7999999)
        self.linesinsert(stu_name,stu_age,sch_name,telephone,stu_height,stu_sex,orderno)

if __name__=='__main__':
    db=DatabaseAcess()          # 创建实例化对象
    for i in range(1,21):       # 循环20次,插入20条数据
        db.data_updata()        # 调用方法

本文参考博客: https://blog.csdn.net/z_ipython/article/details/92408758

你可能感兴趣的:(python学习)