记一些Python(Pymysql)建表、增删改查等基础操作(小白适用)
2024-09-01 00:39:01
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)
最新文章
- css3 em rem等单位的区别
- IOS零碎技术整理(2)-隐藏系统Tabbar
- Three levels at which any machine carrying out an Information-Processing task must be understood
- C++纯虚函数
- 关于垂直切分Vertical Sharding的粒度
- 简单的表单验证(js、jquery)
- HDU1058 Humble Numbers 【数论】
- Songs
- Lucene中的 Query对象
- 2019 蓝桥杯省赛 A 组模拟赛(一)-修建公路
- mysql创建唯一索引,避免数据重复插入
- Ubuntu 18.04安装VNC远程登录
- 以Windows服务方式运行ASP.NET Core程序【转载】
- 如何在windows下使用pip安装
- 动手动脑-Java的方法重载
- gradle构建工具
- shell命令——cut
- ccf201703-1分蛋糕
- Error:Execution failed for task &#39;:app:preDebugAndroidTestBuild&#39;.错误解决
- HTML5前端
热门文章
- luogu P5043 【模板】树同构 hash 最小表示法
- windows:shellcode 远程线程hook/注入(三)
- Elasticsearch和Scala类型转换
- [vue] computed 和 method
- java.lang.NoSuchMethodError:javax.validation.BootstrapConfiguration.getClockProviderClassName
- 集合:List接口的实现类(ArrayList、LinkedList、Vector)
- SpringMVC 集成 JWT验证方式
- Nginx MogileFS 配置
- 【计算机算法设计与分析】——NP
- 003.Nginx配置解析