不陌生,之前学习一个开源SpringBoot项目,Mysql5.5更换到5.7搞得头疼。

数据库连接的坑之前写的IDEA系列连接会遇到的问题。课程代码

今天上课就主要学习了python如何连接mysql及增删改查操作,曾经写过Java项目,这里大同小异,就很简单了。

一、SQLite

SQLite数据库是一个关系型数据库,常作为嵌入式数据库内嵌在应用程序中。

方法 说明
sqlite3.connect(database[,timeout, other optional argument]) 连接到一个SQLite数据库文件。若不存在则创建
connection.cursor([cursorClass]) 创建一个游标cursor
cursor.execute(sql[, optional parameters]) 执行SQL命令的语句
connection.execute(sql[, optional parameters]) 执行SQL命令的语句
connection.commit() 提交事务
connection.close() 关闭数据库连接

将你和5位同学的姓名、专业、年龄、籍贯数据保存成为sqlite格式test.db磁盘文件,并将这6条记录显示到屏幕上。

创建test.db文件,建表(user),并插入数据:(数据纯属瞎编)

  1. import sqlite3
  2. conn = sqlite3.connect("d:/test.db")
  3. sqlstr = "create table user (name varchar(5) primary key, profession varchar(10), age varchar(5), hometown varchar (25))"
  4. conn.execute(sqlstr)
  5. print("create table successfully")
  6. cur = conn.cursor()
  7. sqlstr1 = "insert into user(name, profession, age, hometown)values('王哲铭', '信息工程',20,'湖北十堰') "
  8. cur.execute(sqlstr1)
  9. sqlstr2 = "insert into user(name, profession, age, hometown)values('肖战', '汉语言学',22,'湖北武汉') "
  10. cur.execute(sqlstr2)
  11. sqlstr3 = "insert into user(name, profession, age, hometown)values('蔡徐坤', '英语翻译',18,'湖北恩施') "
  12. cur.execute(sqlstr3)
  13. sqlstr4 = "insert into user(name, profession, age, hometown)values('王一博', '教育技术',25,'湖北仙桃') "
  14. cur.execute(sqlstr4)
  15. sqlstr5 = "insert into user(name, profession, age, hometown)values('罗志祥', '美容美发',16,'湖北襄阳') "
  16. cur.execute(sqlstr5)
  17. sqlstr6 = "insert into user(name, profession, age, hometown)values('杨幂', '表演艺术',18,'湖北黄石') "
  18. cur.execute(sqlstr6)
  19. conn.commit()
  20. print("Records created successfully")
  21. conn.close()

展示数据:

  1. import sqlite3
  2. conn = sqlite3.connect("d:/test.db")
  3. cur = conn.cursor()
  4. sqlstr = "select * from user"
  5. s = cur.execute(sqlstr)
  6. for row in s:
  7. print("name=",row[0])
  8. print("profession=",row[1])
  9. print("age=",row[2])
  10. print("hometown=",row[3],'\n')

一些其他操作:更改删除

  1. import sqlite3
  2. conn = sqlite3.connect("d:/test.db")
  3. cur = conn.cursor()
  4. sql_update = "update user set profession='多人运动' where name='罗志祥'"
  5. #删除最好删主键 primary key
  6. sql_update = "delete from user where name='王哲铭'"
  7. cur.execute(sql_update)
  8. conn.commit()
  9. sql_select = "select * from user"
  10. s = cur.execute(sql_select)
  11. for row in s:
  12. print("name=",row[0])
  13. print("profession=",row[1])
  14. print("age=",row[2])
  15. print("hometown=",row[3],'\n')

二、Mysql

这真的是个巨烦人的地方,重装了成5.7结果以前项目的语法都错了,然后又再去装了5.5,但是网上好像搜每次只能启动一个版本数据库的服务,而且用过的孩子们也晓得net stop mysql容易,再一次net start mysql麻烦的脑壳疼。这里在网上看了些文章就做个分享windows安装两个mysql数据库 5.5 5.7docker安装多版本mysqlLinux下安装启动多个mysql 无奈中突然觉得有一丝想去入钻inux操作系统了emmm

略略略,就吐槽一下,我也是个小白哈

将你和5位同学的姓名、专业、年龄、籍贯数据保存成为mysql格式的数据库python之stu表中,并将这6条记录显示到屏幕上。

没写utf-8编码了,因为有些忘了emm,就索性英文编写了最简单的sql:

  1. CREATE TABLE stu (
  2. NAME VARCHAR(30) PRIMARY KEY,
  3. profession VARCHAR(30),
  4. age INT(8),
  5. hometown VARCHAR(30)
  6. );
  7. INSERT INTO stu VALUES('wangzheming','Information Engineering',20,'ShiYanHuBei');
  8. INSERT INTO stu VALUES('xiaozhan','Chinese Language Study',22,'WuHanHuBei');
  9. INSERT INTO stu VALUES('caixukun','English translation',18,'EnShiHuBei');
  10. INSERT INTO stu VALUES('wangyibo','Educational technology',25,'XianTaoHuBei');
  11. INSERT INTO stu VALUES('luozhixiang','Beauty salons',16,'XiangYangHuBei');
  12. INSERT INTO stu VALUES('yangmi','Performance art',20,'HuangShiHuBei');

python将这些显示到屏幕上:

  1. import pymysql
  2. # 打开数据库连接,此处需要自行配置,我用的Pycharm,在编辑器里有DataBase连接
  3. db = pymysql.connect(host="localhost", user="root",
  4. password="root", db="python", port=3306, charset='utf8')
  5. # 使用cursor()方法获取操作游标
  6. cur = db.cursor()
  7. # 查询操作
  8. # 编写sql 查询语句 stu 对应我的表名
  9. sql = "select * from stu"
  10. try:
  11. cur.execute(sql) # 执行sql语句
  12. results = cur.fetchall() # 获取查询的所有记录
  13. print("name", "\tprofession", "\tage", "\thometown")
  14. # 遍历结果
  15. for row in results:
  16. name = row[0]
  17. profession = row[1]
  18. age = row[2]
  19. hometown = row[3]
  20. print(name, profession, age, hometown, )
  21. except Exception as e:
  22. raise e
  23. finally:
  24. db.close() # 关闭连接

有些乱,勿喷、勿喷

模仿写了些插入修改查询删除操作:

  1. import pymysql
  2. import pymysql.cursors
  3. # 连接数据库
  4. connect = pymysql.Connect(
  5. host='localhost',
  6. port=3306,
  7. user='root',
  8. passwd='root',
  9. db='python',
  10. charset='utf8'
  11. )
  12. # 获取游标
  13. cursor = connect.cursor()
  14. # 插入数据
  15. sql = "INSERT INTO stu (name, profession, age, hometown) VALUES ( '%s', '%s', %d, '%s' )"
  16. data = ('lironghao', 'Music', 24, 'XianNingHuBei')
  17. cursor.execute(sql % data)
  18. connect.commit()
  19. print('成功插入', cursor.rowcount, '条数据')
  20. # 修改数据
  21. sql = "UPDATE stu SET age = %d WHERE name = '%s' "
  22. data = (21, 'lironghao')
  23. cursor.execute(sql % data)
  24. connect.commit()
  25. print('成功修改', cursor.rowcount, '条数据')
  26. # 查询数据
  27. sql = "SELECT profession, hometown FROM stu WHERE name = '%s' "
  28. data = ('xiaozhan',)
  29. cursor.execute(sql % data)
  30. for row in cursor.fetchall():
  31. print("profession:%s\thometown:%s" % row)
  32. print('共查找出', cursor.rowcount, '条数据')
  33. # 删除数据
  34. sql = "DELETE FROM stu WHERE name = '%s' LIMIT %d"
  35. # 检索前 7 个记录行
  36. data = ('lironghao', 7)
  37. cursor.execute(sql % data)
  38. connect.commit()
  39. print('成功删除', cursor.rowcount, '条数据')
  40. # 关闭连接
  41. cursor.close()
  42. connect.close()

附上一个符号表示意义表:

符号 意义
%s 字符串
%d 十进制整数
%o 八进制
%x 十六进制整数
%f 浮点数

Python课程笔记(十)的更多相关文章

  1. Python学习笔记(十二)—Python3中pip包管理工具的安装【转】

    本文转载自:https://blog.csdn.net/sinat_14849739/article/details/79101529 版权声明:本文为博主原创文章,未经博主允许不得转载. https ...

  2. Python课程笔记(一)

    由于新冠状病毒的爆发,不得不在家里上网课,开课已经两个礼拜了,今天上完Python课后,准备整理一下最近学习Python的笔记. 人生苦短,我用Python 一.Hello World 初学一门新的语 ...

  3. Python课程笔记(九)

    本次课程主要学习了Excel和JSON格式的一些读写操作.课程代码 一.Excel数据读写操作 1.安装模块 pip install xlrd pip install xlwt 网不好可以采用三方库: ...

  4. Python课程笔记(八)

    一些简单的文件操作,学过linux的话理解感觉不会很难.课程代码 一.OS 目录方法 这个模块提供了一种方便的使用操作系统函数的方法 函数 说明 os.mkdir("path") ...

  5. Python课程笔记(六)

    今天上课补上了上次未学完比较重点的鼠标和键盘事件,同时开始学习运用turtle进行绘图. 本次课程的代码: https://gitee.com/wang_ming_er/python_course_l ...

  6. Python课程笔记 (五)

    今天主要学习图形用户界面,更多的还是要我们自己去实际操作,课仿佛上了一半就完了,分享一下课程(这里在SixthClass)的源码: https://gitee.com/wang_ming_er/pyt ...

  7. python 学习笔记十九 django深入学习四 cookie,session

    缓存 一个动态网站的基本权衡点就是,它是动态的. 每次用户请求一个页面,Web服务器将进行所有涵盖数据库查询到模版渲染到业务逻辑的请求,用来创建浏览者需要的页面.当程序访问量大时,耗时必然会更加明显, ...

  8. python 学习笔记十八 django深入学习三 分页,自定义标签,权限机制

    django  Pagination(分页) django 自带的分页功能非常强大,我们来看一个简单的练习示例: #导入Paginator>>> from django.core.p ...

  9. python 学习笔记十六 django深入学习一 路由系统,模板,admin,数据库操作

    django 请求流程图 django 路由系统 在django中我们可以通过定义urls,让不同的url路由到不同的处理函数 from . import views urlpatterns = [ ...

随机推荐

  1. 加入Erlang社区-指引

    国内暂且没有发现较活跃.人气较高的论坛或者社区,偶然发现Erlang官网的Community页面描述了一个Slack交流平台,里面有众多异国他乡的大佬,感兴趣的.有技术疑问的都可以加入看看. 加入教程 ...

  2. stderr,stdin,stdout相关

    转载请保留原作者. 目录 一.stdin和stdout 1.意义 2.缓冲 2.1.scanf的缓冲问题 2.2.fflush 3.freopen 二.stderr 1.输出方法 2.默认缓冲 一.s ...

  3. 【C++基础教程】第五课

    上次的作业答案,非常简单. 第一题: 我们需要知道,字符(char类型)在计算机中存储的时候,是把这个字符对应的代码(专业术语叫做编码)进行存储.例如,换行符'\n'的代码就是10,'0'对应的代码就 ...

  4. c++ if语句讲解&例题

    一.if语句 1.基本语法: if(条件 布尔型){ 当条件符合执行的语句 } 2.例子: #include <iostream> using namespace std; int mai ...

  5. Node.js躬行记(10)——接口日志查询

    当运营向我们上报BUG时,我们第一时间是捕获相关的接口.从监控系统中,就可以查到用户使用时接口的请求和响应数据. 若接口的请求正常,那么就需要深入到接口代码中,查看相关的日志,通常会先浏览数据库查询语 ...

  6. jquery监听动态添加的input的change事件

    使用下面方法在监听普通的input的change事件正常 $('#pp').on('change', 'input.videos_poster_input', function () { consol ...

  7. 微信小程序生成小程序某一个页面的小程序码

    1 登录微信小程序后台,mp.weixin.qq.com 2 点击右上角工具->生成小程序码 3 填写小程序名称或appid 4 关键一步,下面页面填写用户微信号后,打开小程序到某一个页面,点击 ...

  8. Linux系列(25) - 常用快捷键(未更新完)

    快捷键 说明 Ctrl+L 清屏 tab tab按一次自动补全目录文件名称/tab按二次将目录下带有补全前面字段的所有文件目录展示出来,例子: cd /   tab键按两次将根目录下所有文件展示出来 ...

  9. 送你一个Python 数据排序的好方法

    摘要:学习 Pandas排序方法是开始或练习使用 Python进行基本数据分析的好方法.最常见的数据分析是使用电子表格.SQL或pandas 完成的.使用 Pandas 的一大优点是它可以处理大量数据 ...

  10. Vue组件间的数据传输

    1.父组件向子组件传输数据:自定义属性 1 //父组件 2 <Son :msg="message" :user="userinfo"></So ...