建立表: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