1.造數據(使用腳本完成1w條):需求:模擬我的信息的數據(姓名(長度必須是6-12位,由大寫字母/小寫字母/數字)、
性別(男、女中隨機)、年齡(18-50之間隨機)、郵箱(@163.com/@qq.com/@126.com,前面的帳戶的名是與姓名相同));
最後要求上面所有使用類、面向對象完成(寫入到csv數據格式文件或者寫入數據庫,excel)excel、csv、yaml、json(數據格式文件)
例如:姓名隨機出來:abcdef----->abcdefg@163.com 最後文件命名爲GetData.py
import random
#另一種方式:使用python的內置模塊string
import string
class GetData():
#self表示的是當前對象的引用
def get_Name(self):
get_length=random.randint(6,12)
get_source=string.digits+string.ascii_letters
get_str="".join(random.sample(get_source,get_length))
return get_str
def get_Age(self):
return random.randint(18,50)
def get_Sex(self):
list1=["男","女"]
#choice表示的是從傳入的參數序列中進行隨機返回一個元素,若是序列爲空則拋出異常(IndexError)
return random.choice(list1)
#郵箱
def get_Email(self):
list1=["@163.com","@126.com","@qq.com"]
#["@","1","6","3"]
return random.choice(list1)
'''
#實現姓名字符串的獲取也能夠用第二種方法
def getName():
get_chr=""
#聲明的是所須要組成構成數據的數據源變量
#sourceSeed="abcdefghijklmn"
#字母都是能夠經過ASCII碼進行相互轉換A----->65 a------>97
#字符型---->由一個字母或者一個漢字所構成;字符型與整形之間是能夠數據類型強制轉換;
#涉及兩種重要函數:ord(傳入字符串參數)/chr(傳入整形值)
get_lenth=random.randint(6,12)
print("長度",get_lenth)
for j in range(1,get_lenth+1):
get_random_chr=random.randint(0,122)
print("隨機的數是:",get_random_chr)
#print(chr(get_chr))
get_return_chr=get_Not_In(get_random_chr)
print(get_return_chr)
if get_return_chr>9:
get_chr+=chr(get_return_chr)
else:
get_chr+=str(get_return_chr)
#print(get_return_chr)
print(get_chr)
#聲明一個函數完成斷定不是在91-97之間的數
def get_Not_In(input_number):
list1=[]
for i in range(10, 65):
list1.append(i)
for i in range(91, 97):
list1.append(i)
#print(set(list1))
while True:
if input_number in set(list1):
get_random_chr = random.randint(0, 122)
input_number= get_random_chr
else:
break
return input_number
getName()
'''
2python
若是數據量過大的話,數據是存儲在數據格式文件中較好仍是數據庫中較好?爲何?
#數據量大的時候,數據確定是存儲在數據庫中(mysql數據庫,oracle數據庫);數據量較大時可能致使文件
#對象流獲取失敗(文件的打開失敗)---->穩定性沒有數據庫強
#-------------------------------------------------------------------------------
#封裝數據庫的建立表、插入數據、更新數據、刪除數據
#完成第一個需求:建立一個表:調用建立表的方法時,可以實現傳入對應的字段便可建立對應的表結構
#例如:create_table("name varchar(20)","sex char(4)","")mysql
import pymysqlimport GetDataclass Mysql_Oprea(): #驅動器對象建立對象時進行初始化 def __init__(self): self.get_conn = pymysql.connect(host="localhost",port=3307,user="root",password= "",database="test0513") self.get_curosr = self.get_conn.cursor() #建立一個建立表的方法 def create_table(self,tableName,*args): #list1=[] get_len=len(args) count=0 str1="" for i in args: count+=1 #list1.append(i) print(i) str1+=i if count!=get_len: str1+="," #tuple1=tuple(list1) print(str1) str_create_sql="create table %s (%s)"%(tableName,str1) self.get_curosr.execute(str_create_sql) print(str_create_sql) #create table stu (stu_name varchar(10)) #刪除表 def drop_table(self,tables): drop_tables='drop table '+tables print(drop_tables) self.get_curosr.execute(drop_tables) #插入數據 def insert_data(self,tableName,*args): str_create_sql = "insert into %s values %s" % (tableName, args) self.get_curosr.execute(str_create_sql) print(str_create_sql) # create table stu (stu_name varchar(10)) #插入數據只是簡單的寫了,好比還有指定列的方法插入,還能夠用好比字典的方法寫,也能夠用一個列表包含多個元組的方法。if __name__ == '__main__': mysqlTest=Mysql_Oprea() tuple1=("lesson_id int","lesson_name varchar(10)") # mysqlTest.create_table("student","s_name varchar(15)","s_Age int(5)","s_sex char(8)","s_Email varchar(20)") # mysqlTest.drop_table('student') get_data=GetData.GetData() for i in range(1, 10001): get_name = get_data.get_Name() get_sex = get_data.get_Sex() get_age = get_data.get_Age() get_email = get_data.get_Email() get_email=get_name+get_email # csv_write_obj.writerow([get_name, get_sex, get_age, get_name + get_email]) mysqlTest.insert_data('student',get_name,get_age,get_sex,get_email)#