通过python插入数据到mysql数据库以及mysql查询方法

首先需要用到pymysql模块,可以通过pycharm下载,也可以使用 pip install pymysql

首先了解一下连接的基本程序

mport pymysql

#pymysql.install_as_MySQLdb() #兼容性命令

#创建数据库链接
db = pymysql.connect(
    host = "localhost", #主机ip
    user = "root", #数据库用户
    password = "1111", #用户对应的密码
    database = "school", #对应的数据库
    port = 3306, #数据库端口,默认3306
    charset = 'utf8' #数据库编码
)
#创建游标:游标用于传递python给mysql的命令和mysql返回的内容
cursor = db.cursor()
#执行部分
exe = cursor.execute("show databases") #执行命令,返回查询的条数
print(exe)
#result = cursor.fetchone()
#result = cursor.fetchmany(3)
result = cursor.fetchall() #查询结果

print(result)
#关闭部分
db.commit() #链接提交,用于对数据库的增删改
cursor.close() #关闭游标
db.close() #关闭链接

然后要用到school库已经建立了表如图所示:

通过python插入数据到mysql数据库以及mysql查询方法

首先用普通方法在各个表中插入数据(只插入了三个表的数据):

# coding:utf-8 #(此处是固定编码指令,必须有,否则会乱码)
import pymysql
import random
db = pymysql .connect(
    user = 'root',
    password = '1234',
    host = 'localhost',
    database = 'school1',
    charset = 'utf8'

    )

cursor = db.cursor()
last_name =list('赵钱孙李周吴郑王')
string = "苏宇轩 苏雨扬 苏雨璇 苏宇璇 苏苏 苏真真 苏雨熙 苏雨萱 苏雨轩 苏黎民 苏忠民 苏嘉毅 苏红 苏瀛 苏远航 苏伟祺 苏宸逸 苏益漫 苏卿尧 苏启尧 苏艺潇 苏绾铎 苏悠然 苏幽然 苏钰 苏俊喜 苏玲珑 苏毅尧 苏妍 苏元礤 苏子又 苏宇童 苏宇童 苏哇滕 苏云瑞 苏熙羟 苏博睿 苏紫菡 苏紫涵 苏文萱 苏雅然 苏佳晨 苏语晨 苏雨晨 苏贝晨 苏诗晗 苏欣妍 苏子萱 苏诗涵 苏依辰 苏依晨 苏晨萱 苏晨菲 苏晨希 苏晨曦 苏喧莹 苏喧妍 苏喧婷 苏昕雨 苏昕月 苏煜云 苏瑾琳 苏瑾 苏仁辙 苏湃濡 苏金月 苏金昌 苏文斌 苏煜轩 苏影 苏尚梅 苏锦曦 苏格格 苏昕靓 苏施雅 苏熙宸 苏冀彦 苏倩 苏袁 苏能 苏晓 苏焕迪 苏治诚 苏珍 苏乙祗 苏乙桓 苏姵莹 苏一员 苏眧臣 苏稔涵 苏广溢 苏子默 苏至朗 苏城朗 苏佳朗 苏圣朗 苏佩 苏钰涵 苏美琪 苏麒午 苏亚斌 苏宦安 苏凤菊 苏煜森 苏春喜 苏一涵 苏子生 苏一铭 苏铭铭 苏昕铭 苏智铭 苏鑫铭 苏学铭 苏跃铭 苏岳铭 苏越铭 苏壹铭 苏二铭 苏毅铭 苏子铭 苏康铭 苏亦铭 苏威铭 苏守铭 苏世铭 苏金铭 苏晓铭 苏珊 苏烨 苏琪 苏梦琪 苏欣悦 苏炘悦 苏刚 苏丽君 苏丽鑫 苏晶晶 苏婉灵 苏廷婷 苏怡婷 苏剑婷 苏醒 苏晨醒 苏婷婷 苏雯婷 苏恒运 苏君怡 苏文娟 苏文涓 苏建坤 苏宇杰 苏娅菲 苏子依 苏子怡 苏拉琪 苏子琪 苏子衡 苏子恒 苏子坤 苏子趟 苏子禾".replace(
    "苏", "").split(" ")
pro = ['python','c','java','php','linux']
for i in range(100):
    name = random.choice(last_name)+random.choice(string)
    gender = random.choice('男女')
    age = random.randint(20, 40)
    project = random.choice(pro)
    sql = "insert into teacher(name,gender,age,project) value('%s','%s',%s,'%s')" % (name, gender, age, project)
    try:
        cursor.execute(sql)
    except Exception as e:
        print(e)
    else:
        print(sql)
db.commit()
cursor.close()
db.close()
# 插入课程
db = pymysql.connect(
	user = "root",
	password = "1234",
	host = "localhost",
	database = "school1",
	charset = "utf8"
	)

cursor = db.cursor()
pro = ['python','c','java','php','linux']
for index,i in enumerate(pro):
    description = "%s 是世界上第%s好的语言" % (i, index + 1)
    # sql = "insert into classes(label,description) value('%s','%s')"%(i,description)
    sql = "update classes set description='%s' where id = %s" % (description, index + 1)
    try:
        cursor.execute(sql)
    except Exception as e:
        print(e)
    else:
        print(sql)
db.commit()
cursor.close()
db.close()

# 插入t_classes
db = pymysql.connect(
	user = "root",
	password = "1234",
	host = "localhost",
	database = "school1",
	charset = "utf8"
	)

cursor = db.cursor()


for i in range(200):
    t_id = random.randint(1, 100)
    c_id = random.randint(1, 5)
    sql = "insert into t_classes(t_id,c_id,delete_flag) value(%s,%s,'T')" % (t_id, c_id)
    try:
        cursor.execute(sql)
    except Exception as e:
        print(e)
    else:
        print(sql)
   
db.commit()
cursor.close()
db.close()

然后通过装饰器的版本插入全部数据;

# coding:utf-8
import random
import pymysql

# 插入课程数据
# 插入学生数据
# 插入关联数据
# 插入宿舍数据

# 引入偏函数模块
from functools import partial


def exect(cursor,sql):
    try:
        cursor.execute(sql)
    except Exception as e:
        print(e)
    else:
        print(sql)

def outer(fun):
    def inner(database = 'school1'):
        db = pymysql.connect(
            user ='root',
            password = '1234',
            host = 'localhost',
            database = 'school1',
            charset = 'utf8'

        )
        cursor = db.cursor()
        sqls = fun()
        # 建立偏函数 ,将参数cursor传入func函数中第一个参数成为常量
        func = partial(exect,cursor)
        if isinstance(sqls,list):
            for sql in sqls:
                func(sql)
        elif isinstance(sqls,str):
            func(sqls)
        db.commit()
        cursor.close()
        db.close()
    return inner

# 插入课程数据
# @outer
def fun():
    sqls = []
    pro = ['python','c','java','php','linux']
    for index,i in enumerate(pro):
        description = '%S 是世界上第%s好的语言'%(i,index+1)
        sql = "update classes set description='%s' where id = %s"%(description,index+1)
        sqls.append(sql)

    return sqls

# 插入关联数据
# @outer
def insert_tClass():
    sqls = []
    for i in range(200):
        t_id = random.randit(1,100)
        c_id = random.randit(1,5)
        sql = "insert into t_classes(t_id,c_id,delete_flag)value(%s,%s,'T')"%(t_id,c_id)
        sqls.append(sql)
    return sqls
# 插入宿舍
# @outer
def insert_home():
    sqls=[]
    address = '北京朝阳区中公教育五方桥基地'
    for j in range(1,3):
        for i in range(1,6):
            home_num = '%s0%s'%(j,i)
            sql = "insert into home(lable,address) value('%s','%s')"%(home_num,address)
            sqls.append(sql)
    return sqls
# 插入学生
@outer
def insert_student():
    sqls =[]
    last_name = list('赵钱孙李周吴郑王')
    string = "苏宇轩 苏雨扬 苏雨璇 苏宇璇 苏苏 苏真真 苏雨熙 苏雨萱 苏雨轩 苏黎民 苏忠民 苏嘉毅 苏红 苏瀛 苏远航 苏伟祺 苏宸逸 苏益漫 苏卿尧 苏启尧 苏艺潇 苏绾铎 苏悠然 苏幽然 苏钰 苏俊喜 苏玲珑 苏毅尧 苏妍 苏元礤 苏子又 苏宇童 苏宇童 苏哇滕 苏云瑞 苏熙羟 苏博睿 苏紫菡 苏紫涵 苏文萱 苏雅然 苏佳晨 苏语晨 苏雨晨 苏贝晨 苏诗晗 苏欣妍 苏子萱 苏诗涵 苏依辰 苏依晨 苏晨萱 苏晨菲 苏晨希 苏晨曦 苏喧莹 苏喧妍 苏喧婷 苏昕雨 苏昕月 苏煜云 苏瑾琳 苏瑾 苏仁辙 苏湃濡 苏金月 苏金昌 苏文斌 苏煜轩 苏影 苏尚梅 苏锦曦 苏格格 苏昕靓 苏施雅 苏熙宸 苏冀彦 苏倩 苏袁 苏能 苏晓 苏焕迪 苏治诚 苏珍 苏乙祗 苏乙桓 苏姵莹 苏一员 苏眧臣 苏稔涵 苏广溢 苏子默 苏至朗 苏城朗 苏佳朗 苏圣朗 苏佩 苏钰涵 苏美琪 苏麒午 苏亚斌 苏宦安 苏凤菊 苏煜森 苏春喜 苏一涵 苏子生 苏一铭 苏铭铭 苏昕铭 苏智铭 苏鑫铭 苏学铭 苏跃铭 苏岳铭 苏越铭 苏壹铭 苏二铭 苏毅铭 苏子铭 苏康铭 苏亦铭 苏威铭 苏守铭 苏世铭 苏金铭 苏晓铭 苏珊 苏烨 苏琪 苏梦琪 苏欣悦 苏炘悦 苏刚 苏丽君 苏丽鑫 苏晶晶 苏婉灵 苏廷婷 苏怡婷 苏剑婷 苏醒 苏晨醒 苏婷婷 苏雯婷 苏恒运 苏君怡 苏文娟 苏文涓 苏建坤 苏宇杰 苏娅菲 苏子依 苏子怡 苏拉琪 苏子琪 苏子衡 苏子恒 苏子坤 苏子趟 苏子禾".replace(
        "苏", "").split(" ")
    for i in range(10):
        name = random.choice(last_name)+random.choice(string)
        gender = random.choice('男女')
        age = random.randint(20,30)
        home_id = random.randint(1,10)
        sql = "insert into student(name,gender,age,home_id) value ('%s','%s','%s','%s')"%(name,gender,age,home_id)
        sqls.append(sql)

    return sqls

if __name__ == '__main__':
    insert_student()

表class所有数据:

通过python插入数据到mysql数据库以及mysql查询方法

表home所有数据

通过python插入数据到mysql数据库以及mysql查询方法

表student数据

通过python插入数据到mysql数据库以及mysql查询方法

关联表数据

通过python插入数据到mysql数据库以及mysql查询方法

表teacher数据

通过python插入数据到mysql数据库以及mysql查询方法