不陌生,之前学习一个开源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),并插入数据:(数据纯属瞎编)

import sqlite3

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

展示数据:

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

一些其他操作:更改删除

import sqlite3

conn = sqlite3.connect("d:/test.db")
cur = conn.cursor() sql_update = "update user set profession='多人运动' where name='罗志祥'" #删除最好删主键 primary key
sql_update = "delete from user where name='王哲铭'"
cur.execute(sql_update)
conn.commit() sql_select = "select * from user"
s = cur.execute(sql_select)
for row in s:
print("name=",row[0])
print("profession=",row[1])
print("age=",row[2])
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:

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

python将这些显示到屏幕上:

import pymysql

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

有些乱,勿喷、勿喷

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

import pymysql
import pymysql.cursors # 连接数据库
connect = pymysql.Connect(
host='localhost',
port=3306,
user='root',
passwd='root',
db='python',
charset='utf8'
) # 获取游标
cursor = connect.cursor() # 插入数据
sql = "INSERT INTO stu (name, profession, age, hometown) VALUES ( '%s', '%s', %d, '%s' )"
data = ('lironghao', 'Music', 24, 'XianNingHuBei')
cursor.execute(sql % data)
connect.commit()
print('成功插入', cursor.rowcount, '条数据') # 修改数据
sql = "UPDATE stu SET age = %d WHERE name = '%s' "
data = (21, 'lironghao')
cursor.execute(sql % data)
connect.commit()
print('成功修改', cursor.rowcount, '条数据') # 查询数据
sql = "SELECT profession, hometown FROM stu WHERE name = '%s' "
data = ('xiaozhan',)
cursor.execute(sql % data)
for row in cursor.fetchall():
print("profession:%s\thometown:%s" % row)
print('共查找出', cursor.rowcount, '条数据') # 删除数据
sql = "DELETE FROM stu WHERE name = '%s' LIMIT %d"
# 检索前 7 个记录行
data = ('lironghao', 7)
cursor.execute(sql % data)
connect.commit()
print('成功删除', cursor.rowcount, '条数据') # 关闭连接
cursor.close()
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. Nginx总结(九)Nginx服务器高性能优化的配置--轻松实现10万并发访问量

    前面讲了如何配置Nginx虚拟主机,如何配置服务日志等很多基础的内容,大家可以去这里看看nginx系列文章:https://www.cnblogs.com/zhangweizhong/category ...

  2. selenium用css、xpath表达式进行元素定位

    绝对路径选择 从根节点开始的,到某个节点,每层都依次写下来,每层之间用 / 分隔的表达式,就是某元素的 绝对路径 Xpath : /html/body/div CSS : html>body&g ...

  3. C++课后习题

    一.设计一个类people,有保护数据成员:age(年龄,整型),name(姓名,string),行为成员:两个构造函数(一个默认,另一个带参数):析构函数:void setValue(int m, ...

  4. Appium 自动化测试改造思路

    流水账脚本 从头到尾编写测试脚本 PO封装 业务行为与操作具体页面元素分离 basepage封装 如封装find方法,目的时增强稳定性 数据驱动封装 将常用的数据改为配置文件 为构建测试平台打基础

  5. genymotion启动模拟器后,sdk查询adb devices为空-解决方案

    我们在genymotion中安装了一个安卓模拟器,比如Google Nexus 4,启动该模拟器后,在cmd中输入adb devices,发现为空. 解决方案:在genymotion选择Setting ...

  6. CF666E-Forensic Examination【广义SAM,线段树合并】

    正题 题目链接:https://www.luogu.com.cn/problem/CF666E 解题思路 给出一个串\(S\)和\(n\)个串\(T_i\).\(m\)次询问\(S_{a\sim b} ...

  7. P6880-[JOI 2020 Final]オリンピックバス【最短路】

    正题 题目链接:https://www.luogu.com.cn/problem/P6880 题目大意 给出\(n\)个点\(m\)条边的有向图,边有边权和一个翻转权值. 翻转至多一条边使得\(1-& ...

  8. Go语言中的并发编程

    并发是编程里面一个非常重要的概念,Go语言在语言层面天生支持并发,这也是Go语言流行的一个很重要的原因. Go语言中的并发编程 并发与并行 并发:同一时间段内执行多个任务(你在用微信和两个女朋友聊天) ...

  9. oracle 查看表结构语句

    desc + 表名 describe命令 列出指定表的列定义,视图或同义词,或指定函数或存储过程的详述. 语法:desc[ribe]   {[模式.]对象[@链接串]} 模式 表示对象驻留的架构.如果 ...

  10. windows下如何查看所有端口及占用

    1.在windows下查看所有端口: 先点击电脑左下角的开始,然后选择运行选项,接着我们在弹出的窗口中,输入[cmd]命令,进行命令提示符. 然后我们在窗口中输入[netstat -ano]按下回车, ...