python mysql数据库基本操作方法
实现:使用Python实现用户登录,如果用户存在(数据库表中存在)则登录成功(假设该用户已在数据库中)
import pymysql username = input('输入用户名:').strip()
pwd = input('输入密码:').strip() # 1.连接
conn = pymysql.connect(host='192.168.11.60', # 数据库ip地址
port=3306, # 数据库端口
user='py123', # 上面创建连接数据库的账号:py123
password='py123', # 上面创建连接数据库的密码:py123
db='dbpymysql', # 需要连接的数据库名
charset='utf8' # 数据库字符编码utf8,注意不是utf-8会报错!
) # 2.创建游标
cur = conn.cursor() # 注意%s需要加引号
# 创建sql查询语句
sql = "select * from userinfo where username='%s' and password='%s'" % (username, pwd)
print(sql) # 打印sql语句 # 3.执行sql语句 , cur.execute(sql)执行
result = cur.execute(sql) # 执行sql语句,返回sql查询成功的记录数目
print(result) # 打印返回值,返回0,1 即True或False # 关闭连接, 游标和连接都要关闭
cur.close() # 关闭游标
conn.close() # 关闭连接 if result:
print('登陆成功')
else:
print('登陆失败')
执行结果:
增、删、改:conn.commit()
commit()方法:在数据库里增、删、改的时候,必须要进行提交,否则插入的数据不生效
pymysql添加数据 insert方法
#!/usr/bin/env python
# coding: utf-8 import pymysql # 1.连接
conn = pymysql.connect(host='192.168.11.102', # 数据库ip地址
port=3306, # 数据库端口
user='py123', # 上面创建连接数据库的账号:py123
password='py123', # 上面创建连接数据库的密码:py123
db='dbpymysql', # 需要连接的数据库名
charset='utf8' # 数据库字符编码utf8,注意不是utf-8会报错!
) # 2.创建游标
cur = conn.cursor() # 注意%s需要加引号
# 创建sql查询语句
sql = "insert into userinfo(username,password) values (%s,%s)" # 3.执行sql语句 , cur.execute(sql)执行
result = cur.execute(sql, ('lisi', '')) # 执行sql语句插入一条数据 # 插入多条数据 executemany
# type: (str, list) -> int
result1 = cur.executemany(sql, [('wangwu', ''), ('zhuliu', '')]) # 一定记得commit,不然数据不会保存
conn.commit() # 关闭连接, 游标和连接都要关闭
cur.close() # 关闭游标
conn.close() # 关闭连接 if result:
print('插入一条数据执行成功')
if result1:
print('插入多条数据执行成功')
执行结果
插入一条数据执行成功
插入多条数据执行成功
pymysql更改数据,update方法
import pymysql # 1.连接
conn = pymysql.connect(host='192.168.11.102', # 数据库ip地址
port=3306, # 数据库端口
user='py123', # 上面创建连接数据库的账号:py123
password='py123', # 上面创建连接数据库的密码:py123
db='dbpymysql', # 需要连接的数据库名
charset='utf8' # 数据库字符编码utf8,注意不是utf-8会报错!
) # 2.创建游标
cur = conn.cursor() # 注意%s需要加引号
# 创建sql查询语句
sql = "update userinfo set username = %s where username='lisi'" # 3.执行sql语句 , cur.execute(sql)执行1
result = cur.execute(sql, '李四') # 执行sql语句更改一条数据 # 一定记得commit,不然数据不会保存
conn.commit() # 关闭连接, 游标和连接都要关闭
cur.close() # 关闭游标
conn.close() # 关闭连接 if result:
print('更改一条数据执行成功')
执行结果
更改一条数据执行成功
pymysql删除数据,delete方法
#!/usr/bin/env python
# coding: utf-8 import pymysql # 1.连接
conn = pymysql.connect(host='192.168.11.102', # 数据库ip地址
port=3306, # 数据库端口
user='py123', # 上面创建连接数据库的账号:py123
password='py123', # 上面创建连接数据库的密码:py123
db='dbpymysql', # 需要连接的数据库名
charset='utf8' # 数据库字符编码utf8,注意不是utf-8会报错!
) # 2.创建游标
cur = conn.cursor() # 注意%s需要加引号
# 创建sql查询语句
sql = "delete from userinfo where username='wangwu'" # 3.执行sql语句 , cur.execute(sql)执行1
result = cur.execute(sql) # 执行sql语句更改一条数据 # 一定记得commit,不然数据不会保存
conn.commit() # 关闭连接, 游标和连接都要关闭
cur.close() # 关闭游标
conn.close() # 关闭连接 if result:
print('删除一条数据执行成功')
执行结果
删除一条数据执行成功
查:fetchone、fetchmany、fetchall
fetchone():获取下一行数据,第一次为首行;
fetchall():获取所有行数据源
fetchmany(4):获取4行数据
pymysql使用fetchone():获取下一行数据
#!/usr/bin/env python
# coding: utf-8
import pymysql # 1.连接
conn = pymysql.connect(host='192.168.11.102', # 数据库ip地址
port=3306, # 数据库端口
user='py123', # 上面创建连接数据库的账号:py123
password='py123', # 上面创建连接数据库的密码:py123
db='dbpymysql', # 需要连接的数据库名
charset='utf8' # 数据库字符编码utf8,注意不是utf-8会报错!
) # 2.创建游标
cur = conn.cursor() # 注意%s需要加引号
# 创建sql查询语句
sql = "select * from userinfo" # 3.执行sql语句 , cur.execute(sql)执行1
result = cur.execute(sql) # 执行sql语句更改一条数据 # 查询第一行的数据
row = cur.fetchone()
print(row) # 查询第二行的数据
row = cur.fetchone()
print(row) # 关闭连接, 游标和连接都要关闭
cur.close() # 关闭游标
conn.close() # 关闭连接
执行结果
('zhangsan', '123')
('李四', '321')
pymysql使用fetchall():获取所有数据
#!/usr/bin/env python
# coding: utf-8
import pymysql # 1.连接
conn = pymysql.connect(host='192.168.11.102', # 数据库ip地址
port=3306, # 数据库端口
user='py123', # 上面创建连接数据库的账号:py123
password='py123', # 上面创建连接数据库的密码:py123
db='dbpymysql', # 需要连接的数据库名
charset='utf8' # 数据库字符编码utf8,注意不是utf-8会报错!
) # 2.创建游标
cur = conn.cursor() # 注意%s需要加引号
# 创建sql查询语句
sql = "select * from userinfo" # 3.执行sql语句 , cur.execute(sql)执行1
result = cur.execute(sql) # 执行sql语句更改一条数据 # 获取所有行的数据
row = cur.fetchall()
print(row) # 关闭连接, 游标和连接都要关闭
cur.close() # 关闭游标
conn.close() # 关闭连接
执行结果
(('zhangsan', '123'), ('李四', '321'), ('zhuliu', '3321'))
pymysql使用fetchmany():获取多行数据
#!/usr/bin/env python
# coding: utf-8
import pymysql # 1.连接
conn = pymysql.connect(host='192.168.11.102', # 数据库ip地址
port=3306, # 数据库端口
user='py123', # 上面创建连接数据库的账号:py123
password='py123', # 上面创建连接数据库的密码:py123
db='dbpymysql', # 需要连接的数据库名
charset='utf8' # 数据库字符编码utf8,注意不是utf-8会报错!
) # 2.创建游标
cur = conn.cursor() # 注意%s需要加引号
# 创建sql查询语句
sql = "select * from userinfo" # 3.执行sql语句 , cur.execute(sql)执行1
result = cur.execute(sql) # 执行sql语句更改一条数据 # 获取多行数据
row = cur.fetchmany(3)
print(row) # 关闭连接, 游标和连接都要关闭
cur.close() # 关闭游标
conn.close() # 关闭连接
执行结果:
(('zhangsan', '123'), ('李四', '321'), ('zhuliu', '3321'))
默认情况下,我们获取到的返回值是元组,只能看到每行的数据,却不知道每一列代表的是什么,这个时候可以使用以下方式来返回字典,每一行的数据都会生成一个字典:
在实例化的时候,将属性cursor设置为pymysql.cursors.DictCursor
cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
示例:
#!/usr/bin/env python
# coding: utf-8
import pymysql # 1.连接
conn = pymysql.connect(host='192.168.11.102', # 数据库ip地址
port=3306, # 数据库端口
user='py123', # 上面创建连接数据库的账号:py123
password='py123', # 上面创建连接数据库的密码:py123
db='dbpymysql', # 需要连接的数据库名
charset='utf8' # 数据库字符编码utf8,注意不是utf-8会报错!
) # 2.创建游标,
# cursor=pymysql.cursors.DictCursor 设置返回值为字典
cur = conn.cursor(cursor=pymysql.cursors.DictCursor) # 注意%s需要加引号
# 创建sql查询语句
sql = "select * from userinfo" # 3.执行sql语句 , cur.execute(sql)执行1
result = cur.execute(sql) # 执行sql语句更改一条数据 # 获取所有行的数据
row = cur.fetchall()
print(row) # 关闭连接, 游标和连接都要关闭
cur.close() # 关闭游标
conn.close() # 关闭连接
执行结果
[{'username': 'zhangsan', 'password': '123'}, {'username': '李四', 'password': '321'}, {'username': 'zhuliu', 'password': '3321'}]
在fetchone示例中,在获取行数据的时候,可以理解开始的时候,有一个行指针指着第一行的上方,获取一行,它就向下移动一行,所以当行指针到最后一行的时候,就不能再获取到行的内容,所以我们可以使用如下方法来移动行指针:
第一个值为移动的行数,整数为向下移动,负数为向上移动,mode指定了是相对当前位置移动,还是相对于首行移动
cursor.scroll(1,mode='relative') # 相对当前位置移动(类似光标指针)
cursor.scroll(2,mode='absolute') # 相对绝对位置移动
示例:
#!/usr/bin/env python
# coding: utf-8
import pymysql # 1.连接
conn = pymysql.connect(host='192.168.11.102', # 数据库ip地址
port=3306, # 数据库端口
user='py123', # 上面创建连接数据库的账号:py123
password='py123', # 上面创建连接数据库的密码:py123
db='dbpymysql', # 需要连接的数据库名
charset='utf8' # 数据库字符编码utf8,注意不是utf-8会报错!
) # 2.创建游标,设置返回值为字典
cur = conn.cursor(cursor=pymysql.cursors.DictCursor) # 注意%s需要加引号
# 创建sql查询语句
sql = "select * from userinfo" # 3.执行sql语句 , cur.execute(sql)执行1
result = cur.execute(sql) # 执行sql语句更改一条数据 # 查询第一行的数据
row = cur.fetchone()
print(row) # 查询第二行的数据
row = cur.fetchone()
print(row) # 设置之后,光标相对于当前位置往前移动了一行,所以打印的结果为第二行的数据
cur.scroll(-1, mode='relative')
row = cur.fetchone()
print(row) # 设置之后,光标相对于首行没有任何变化,所以打印的结果为第一行数据
cur.scroll(0, mode='absolute')
row = cur.fetchone()
print(row) # 关闭连接, 游标和连接都要关闭
cur.close() # 关闭游标
conn.close() # 关闭连接
执行结果
{'username': 'zhangsan', 'password': '123'}
{'username': '李四', 'password': '321'}
{'username': '李四', 'password': '321'}
{'username': 'zhangsan', 'password': '123'}
like
在Mysql中 like '%123%’在MySQLdb中等价与like '%%123%%',它用一个%对Mysql中的%进行转义。所以Mysql中 like '123%’在MySQLdb中等价与like '123%%;Mysql中 like '%123’在MySQLdb中等价与like '%%123’。
SELECT * FROM `fitback_dev`.`t_staff_info` WHERE `account` like '%%18706%%' LIMIT 0, 1000
python mysql数据库基本操作方法的更多相关文章
- python mysql数据库压力测试
python mysql数据库压力测试 pymysql 的执行时间对比 1,装饰器,计算插入1000条数据需要的时间 def timer(func): def decor(*args): start_ ...
- 10分钟教你Python+MySQL数据库操作
欲直接下载代码文件,关注我们的公众号哦!查看历史消息即可! 本文介绍如何利用python来对MySQL数据库进行操作,本文将主要从以下几个方面展开介绍: 1.数据库介绍 2.MySQL数据库安装和设置 ...
- Python MySQL 数据库
python DB API python访问数据库的统一接口规范,完成不同数据库的访问 包含的内容: connection cursor exceptions 访问数据库流程: 1.创建connect ...
- python+mysql数据库的简单操作
最近接了一个任务,测试某项类似于收益情况报表的功能,因计算公式复杂,单纯手算过于复杂,所以想到写成脚本 根据python的分治原则,先整了几个函数用于实现计算逻辑,后发现数据输入过于繁琐,所以决定使用 ...
- python mysql数据库操作
一.pymysql 模块安装(本文博客推荐:https://www.cnblogs.com/clschao/articles/10023248.html) pip3 install pymysql 二 ...
- python mysql数据库中 json的存储
首先数据库里的字段类型需要设置为json: 存储这个json时需要把这个json变为字符串,而且是最外层为单引号,内部字符串为双引号!如图: 所以python脚本中这个字段的字符串应该这样写: 得出 ...
- python --- mysql数据库的操作
1.pymysql的初使用 import pymysql db_config = { 'host' :'127.0.0.1', 'user':'root', ', , 'database':'test ...
- 【转】python mysql数据库 'latin-1' codec can't encode character错误问题解决
UnicodeEncodeError: 'latin-1' codec can't encode character "UnicodeEncodeError:'latin-1' code ...
- python mysql数据库 'latin-1' codec can't encode character错误问题解决
"UnicodeEncodeError:'latin-1' codec can't encode character ..." This is because MySQLd ...
随机推荐
- ADO.Net和Entity Framework的区别联系
它们有以下几点区别:1,ADO.Net是开发人员自己select.update等写sql语句,来实现对数据库的增删改查等操作:采用EF进行开发操作数据库的时候,只需要操作对象,这样做使开发更方便,此时 ...
- SVN diff
http://svnbook.red-bean.com/en/1.6/svn.ref.svn.c.diff.html Name svn diff (di) — This displays the di ...
- Qt5 escape spaces in path
There are two possible ways. You can either use escaped quotes (inserting the string between quotes) ...
- Manjaro Linux 入门使用教程
Manjaro 初体验 Manjaro 是一款基于 Arch LInux 的自由开源发行版,它吸收了 Arch Linux 优秀丰富的软件管理,同时提供了稳定流畅的操作体验.优雅简单是它的追求,稳定实 ...
- Akka 集群单例Cluster Singleton
一.简介 集群中Cluster Singleton 集群中有而只一个单例,可应用于集群全局调控,单一运算决策,中央命名服务或中央路由等应用场景 二.依赖 dependencies { compile ...
- 【集群实战】NFS服务常见故障排查和解决方法
NFS,全名叫Network File System,中文叫网络文件系统,是Linux.UNIX系统的分布式文件系统的一个组成部分,可实现在不同网络上共享远程文件系统. NFS由Sun公司开发,目前已 ...
- 【阅读笔记】Ranking Relevance in Yahoo Search (一)—— introduction & background
ABSTRACT: 此文在相关性方面介绍三项关键技术:ranking functions, semantic matching features, query rewriting: 此文内容基于拥有百 ...
- JAVA连接Excel最好用的开源项目EasyExcel,官方使用文档及.jar包下载
EasyExcel是一个基于Java的简单.省内存的读写Excel的开源项目.在尽可能节约内存的情况下支持读写百M的Excel. github地址:https://github.com/alibaba ...
- C语言编程入门题目--No.12
题目:判断101-200之间有多少个素数,并输出所有素数. 1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数. 2.程序源代码: # ...
- 图论--Floyd总结
Key word: ①最短路 ②传递闭包:大小关系 数值关系 先后关系 联通关系 ③floyd变形 ④实现方式:插点发法 ⑤思想:动态规划 1.最短路: 最短路 ...