1. 程式人生 > >python實現:向資料庫中插入100條測試資料

python實現:向資料庫中插入100條測試資料

建立表:

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指令碼:

要先安裝pymysql:

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-提交資料-關閉遊標-關閉連結