python實現:向數據庫中插入100條測試數據

建立表:java

create table studentInfo(
  ID int not null auto_increment comment "不爲空的自增加的主鍵ID",
  student_id varchar(20) not null,
  name varchar(30) not null,
  sex char(4),
  tel varchar(13) unique not null,
  AdmissionDate datetime default '0000:00:00 00:00:00',
  primary key (ID),       #每一個表都要有主鍵,通常都在ID列
  unique student_id(student_id)   #索引。unique爲索引時這一列數據不能都有重複。不能插入相同數據。想插入同數據,能夠用 key、 index  
)engine=innodb character set utf8 comment "學生信息表";
create table grade(
  ID int auto_increment not null,
  stuID varchar(20),
  course varchar(20) not null,
  score tinyint(4) default 0,
  primary key (ID),
  key idx_stuid(stuID),   #設置索引
  CONSTRAINT FK_ID FOREIGN KEY(stuID) REFERENCES studentInfo(student_id)
)engine=innodb character set utf8 comment "學生成績表";    #外鍵,字段:stuID 關聯上個表的student_id字段。在grade生成數據的話,在grade插入的數據的stuID 必須存在於studentInfo表。刪的時候也不能單獨刪。

python腳本:python

要先安裝pymysql:mysql

pip install pymysql==0.7.6
import pymysql
import random
def insertData():
    conn = pymysql.connect(    # pymysql.connect鏈接數據庫
    host = "127.0.0.1", 
    port = 3306,
    user = "root", 
    passwd = "gloryroad", 
    db = "testnewman", 
    charset = "utf8")
    cur = conn.cursor()   #獲取數據庫的遊標,指向要操做的哪一個庫、哪一個表、哪行記錄
    conn.select_db('gloryroad')    #選擇要操做的庫,能夠不寫,默認是鏈接的庫db = "testnewman", 
    courseList = ['python', 'java', 'mysql', 'linux', '接口測試', '性能測試', '自動化測試','數據結構與算法']
    for i in range(1, 101):
        student_id = '201803' + '0' * (3 - len(str(i))) + str(i)     #201803001(最少沒有0,最多2個0)
        name = random.choice(['Lucy','Tom','Lily','Amy','Dave','Aaron','Baron']) + str(i)
        tel = '1' + str(random.choice([3, 5, 7, 8])) + str(random.random())[2:11]
        sex = random.choice(['', ''])
        stuinfo_sql = "insert into studentInfo(student_id, name, sex, tel, AdmissionDate) \
        values('%s', '%s', '%s', '%s', date_sub(now(),interval %s day))" \
        %(student_id, name, sex, tel, random.randint(90, 120))
        cur.execute(stuinfo_sql)    #sql語句存到變量中
        conn.commit()   #插入數據完後提交數據
        for j in courseList:
            grade_sql = "insert into grade(stuID,course,score) values('%s','%s',%s)" %(student_id,j,random.randint(80, 100))   
            cur.execute(grade_sql)
    cur.close()       #遊標關閉
    conn.commit()  
    conn.close()    #鏈接關閉
   
insertData()
print("數據插入結束!")

代碼思路:鏈接數據庫-獲取遊標-拼好sql-執行sql-提交數據-關閉遊標-關閉連接linux

相關文章
相關標籤/搜索