1、读取sql文件创建数据表

有一个形如下图的sql文件,使用python读取文件并在数据库中创建所有的表。

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:101677771

代码是很久以前搬的,忘了出处了> <,输入sql文件名称和数据库名称即可创建,执行成功或失败时都会有打印哪条sql语句执行成功或失败

import pymysql

def CreateTables(document,database):
try:
db = pymysql.connect(host='localhost', user='root', password='123', database=database, charset='utf8')
cursor = db.cursor()
with open(document,encoding='utf-8',mode = 'r') as f:
sql_list = f.read().split(';')[:-1]
for x in sql_list:
if '\n' in x:
x= x.replace('\n',' ')
if ' ' in x:
x= x.replace(' ',' ')
sql_item = x+';'
cursor.execute(sql_item)
print("执行成功sql:%s"%sql_item)
except Exception as e:
print(e)
print('执行失败sql:%s'%sql_item)
finally:
cursor.close()
db.commit()
db.close()

2、增删改查

假设如上面sql文件里的table_1,想在数据库中创建一个这样的表

Id Name Type
213 亚索 中单
443 薇恩 ADC
4396 李青 打野

则在python中创建一个形如dict = {"Id":213,"Name":亚索,"Type":"中单"}的字典,并将每列数据放入一个list中,即list = [{"Id":213,"Name":亚索,"Type":"中单"},{"Id":443,"Name":薇恩,"Type":"ADC"},{"Id":4396,"Name":李青,"Type":"打野"}],遍历该字典插入数据

import pymysql
lists = [{"Id":213,"Name":亚索,"Type":"中单"},{"Id":443,"Name":薇恩,"Type":"ADC"},{"Id":4396,"Name":李青,"Type":"打野"}]
table = 'table_1'
name = '亚索'
db = pymysql.connect(host='localhost', user='root', password='123', database='test', charset='utf8')
cursor = db.cursor()
#增
for lis in lists:
keys = ','.join(lis.keys())
values = ','.join(['%s'] * len(lis))
sql = 'INSERT INTO {table} ({keys}) VALUES ({values})'.format(table=table, keys=keys, values=values)
cursor.execute(sql, tuple(lis.values()))
#删
sql = "DELETE FROM talbe_1 WHERE Name = '%s'"%name
cursor.execute(sql)
#改
sql = "UPDATE table_1 SET id = 666 WHERE Name = '%s'"%name
cursor.execute(sql)
#查
sql = "SELECT * FROM table_1"
cursor.execute(sql)
res = cursor.fetchall() cursor.close()
db.commit()
db.close()

3、自增序号从当前最大值开始连续

如table_3的nId为自增序号,假设表中有1,2,3…48条数据,再删除了45,46,47,48后,新增数据依旧会从49开始编号造成不连续,为了让它连续的继续从45开始编号,应添加下列代码

sql = 'ALTER TABLE table_3 auto_increment = 1'
cursor.execute(sql)

 

记一些Python(Pymysql)建表、增删改查等基础操作(小白适用)的更多相关文章

  1. Python之注册表增删改查(干货)

    在Windows平台下,对注册表的增删改查的需求比较多,微软提供了很多用于访问,修改注册表等的API,我们可以使用诸如bat,或者C++等各种方式去访问修改注册表.无所不能的python下如何完成这些 ...

  2. 2018.8.1 python中字典的增删改查及其它操作

    一.字典的简单介绍 1.dict 用{}来表示       键值对数据           {key:value} 唯一性 2.键都必须是可哈希,不可变的数据类型就可以当做字典中的键 值没有任何限制 ...

  3. Django框架(八)--单表增删改查,在Python脚本中调用Django环境

    一.数据库连接配置 如果连接的是pycharm默认的Sqlite,不用改动,使用默认配置即可 如果连接mysql,需要在配置文件中的setting中进行配置: 将DATABASES={} 更新为 DA ...

  4. Django框架(九)—— 单表增删改查,在Python脚本中调用Django环境

    目录 单表增删改查,在Python脚本中调用Django环境 一.数据库连接配置 二.orm创建表和字段 三.单表增删改查 1.增加数据 2.删除数据 3.修改数据 4.查询数据 四.在Python脚 ...

  5. 基于pymysql模块的增删改查

    上课笔记 重点:(熟练)多表查询创建存储过程原生sql索引原理 pymysql 封装好的客户端cursor 底层就是一个send操作commit 告诉mysql真的要完成修改操作(不然修改不会生效)e ...

  6. GZFramwork数据库层《四》单据主从表增删改查

    同GZFramwork数据库层<三>普通主从表增删改查 不同之处在于:实例 修改为: 直接上效果: 本系列项目源码下载地址:https://github.com/GarsonZhang/G ...

  7. GZFramwork数据库层《三》普通主从表增删改查

    运行结果: 使用代码生成器(GZCodeGenerate)生成tb_Cusomer和tb_CusomerDetail的Model 生成器源代码下载地址: https://github.com/Gars ...

  8. GZFramwork数据库层《二》单据表增删改查(自动生成单据号码)

    运行效果: 使用代码生成器(GZCodeGenerate)生成tb_EmpLeave的Model 生成器源代码下载地址: https://github.com/GarsonZhang/GZCodeGe ...

  9. GZFramwork数据库层《一》普通表增删改查

    运行结果:     使用代码生成器(GZCodeGenerate)生成tb_MyUser的Model 生成器源代码下载地址: https://github.com/GarsonZhang/GZCode ...

随机推荐

  1. 2019 HL SC day2

    今天讲的是网络流 大部分题目都写过了 这里 就总结一番. bzoj 1066 裸的最大流 不过需要拆点细节方面有一点坑 剩下的 没什么了. //#include<bits/stdc++.h> ...

  2. 从零搭建Spring Boot脚手架(1):开篇以及技术选型

    1. 前言 目前Spring Boot已经成为主流的Java Web开发框架,熟练掌握Spring Boot并能够根据业务来定制Spring Boot成为一个Java开发者的必备技巧,但是总是零零碎碎 ...

  3. Python库大全,建议收藏留用!

    学Python,想必大家都是从爬虫开始的吧.毕竟网上类似的资源很丰富,开源项目也非常多. 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. ...

  4. Python利用Twilio(国际)以及腾讯云服务做一些事情

    短信服务验证服务已经不是什么新鲜事了,但是免费的手机短信服务却不多见,本次利用Python3.0基于Twilio和腾讯云服务分别来体验一下国际短信和国内短信接口. 首先,注册Twilio: www.t ...

  5. 深入探究JVM之方法调用及Lambda表达式实现原理

    @ 目录 前言 正文 解析 分派 静态分派 动态分派 单分派和多分派 动态分派的实现 Lambda表达式的实现原理 MethodHandle 总结 前言 在最开始讲解JVM内存结构的时候有简单分析过方 ...

  6. 史上最简单操作!!!!!!!Window Server2012 修改远程桌面端口号

    Window Server2012 修改远程桌面端口号   Win + R 输入 regedit 打开注册表编辑器 在注册表编辑器中找到 PortNumber 双击 PortNumber,选择10进制 ...

  7. Spring IOC 启动过程

    1. 引言 本篇博文主要介绍 IOC 容器的启动过程,启动过程分为两个步骤,第一个阶段是容器的启动阶段,第二个阶段是 Bean 实例化阶段,这两个阶段各自需要执行的步骤如下图,接下来会一一介绍. 需要 ...

  8. 2020-04-07:假如你们系统接收十几种报文,用什么方式对应的各自的service,总不能都用if-else判断吧

    福哥答案2020-04-08: 策略,工厂.

  9. C#LeetCode刷题之#9-回文数(Palindrome Number)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3840 访问. 判断一个整数是否是回文数.回文数是指正序(从左向右 ...

  10. Vue 图片压缩上传: element-ui + lrz

    步骤 安装依赖包 npm install --save lrz 在main.js里引入 import lrz from 'lrz' 封装 compress函数 封装上传组件 upload-image ...