python之mysql查询

本文通过Python的pymysql库演示了数据库的基本操作,包括连接数据库、查询数据、条件筛选、模糊查询和精确查询等。示例中展示了如何获取单条、全部、特定字段以及满足特定条件的数据,如工资范围、名字包含特定字符等。同时,还展示了如何处理没有奖金的用户信息。
该文章已生成可运行项目,

前置信息:

数据库地址='localhost'
数据库用户名='root'
数据库密码='root'
数据库名称='test'

数据库中数据信息

id  name    gongzi
1	张三	100
2	李四	200
3	王二麻子	300
4	李晓天	400

从user表中获取一条信息

从test数据库user表中获取第一个数据:

import pymysql.cursors

#数据库链接信息
db = pymysql.connect(host='localhost',
                     user='root',
                     password='root',
                     database='test')

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

# SQL 查询语句,查询user表
sql = 'select * from user '


#执行sql语句查询
cursor.execute(sql)


#这是获取表中第一个数据
rest=cursor.fetchone()
print(rest)


# 关闭数据库连接
db.close()

返回结果:

(1, '张三', '100')

获取表中的全部数据:

import pymysql.cursors

db = pymysql.connect(host='localhost',
                     user='root',
                     password='root',
                     database='test')

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

# SQL 查询语句,查询user表
sql = 'select * from user '

cursor.execute(sql)

#这是查询表中所有的数据
rest=cursor.fetchall()

for i in rest:
    print(i)

# 关闭数据库连接
db.close()

执行结果:

(1, '张三', '100')
(2, '李四', '200')
(3, '王二麻子', '300')
(4, '李晓天', '400')

获取某字段全部信息:

例如获取user表中name字段下的所有姓名:

import pymysql.cursors

db = pymysql.connect(host='localhost',
                     user='root',
                     password='root',
                     database='test')

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

# SQL 查询语句,查询user表中name字段中的数据
sql = 'select name from user '

cursor.execute(sql)

#这是查询表中所有的数据
rest=cursor.fetchall()

for i in rest:
    print(i)

# 关闭数据库连接
db.close()

执行结果:

('张三',)
('李四',)
('王二麻子',)
('李晓天',)

条件查询-返回全部信息:

例如获取工资大于100的数据信息:

import pymysql.cursors

db = pymysql.connect(host='localhost',
                     user='root',
                     password='root',
                     database='test')

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

#查询工资大于100的数据
#格式: selet * form 表名字  where 条件
sql = 'select * from user WHERE gongzi>100'


cursor.execute(sql)

#这是查询表中所有的数据
rest=cursor.fetchall()

for i in rest:
    print(i)

# 关闭数据库连接
db.close()

执行结果:

(2, '李四', '200')
(3, '王二麻子', '300')
(4, '李晓天', '400')

条件查询B-只返回符合条件的名字

例如,查询test数据库user表中,工资大于100的名字都是有哪些;

import pymysql.cursors

db = pymysql.connect(host='localhost',
                     user='root',
                     password='root',
                     database='test')

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

#查询工资大于100的数据
#格式: selet * form 表名字  where 条件
sql = 'select name from user WHERE gongzi>100'


cursor.execute(sql)

#这是查询表中所有的数据
rest=cursor.fetchall()

for i in rest:
    print(i)

# 关闭数据库连接
db.close()

执行结果:

('李四',)
('王二麻子',)
('李晓天',)

数据库条件筛选:

例如,查询test数据库user表中,工资大于等于100,且小于等于400的用户信息,也就是某条件范围筛选;

import pymysql.cursors

db = pymysql.connect(host='localhost',
                     user='root',
                     password='root',
                     database='test')

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()


#条件条范围筛选
# sql="select * from user where name = '李四'"

sql="select * from user where gongzi>=200 and gongzi<=400"

cursor.execute(sql)

#这是查询表中所有的数据
rest=cursor.fetchall()

for i in rest:
    print(i)


# 关闭数据库连接
db.close()

执行结果:

(2, '李四', '200')
(3, '王二麻子', '300')
(4, '李晓天', '400')

模糊查询

例如查询,name字段下的数据,哪些用户的名字包含[李]姓,并且返回全部信息;

import pymysql.cursors

db = pymysql.connect(host='localhost',
                     user='root',
                     password='root',
                     database='test')

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

#模糊查询,查询名字中包含姓李的用户信息;

sql="select * from user where name like '%李%'"

cursor.execute(sql)

#这是查询表中所有的数据
rest=cursor.fetchall()

for i in rest:
    print(i)

# 关闭数据库连接
db.close()

返回信息:

(2, '李四', '200')
(4, '李晓天', '400')

精确查询

查询名称为:李四的用户信息

import pymysql.cursors

db = pymysql.connect(host='localhost',
                     user='root',
                     password='root',
                     database='test')

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()


#条件精确查询
# sql="select * from user where name = '李四'"

sql="select * from user where name = '李四'"



cursor.execute(sql)

#这是查询表中所有的数据
rest=cursor.fetchall()

for i in rest:
    print(i)


# 关闭数据库连接
db.close()

执行结果:

(2, '李四', '200')

查询多个用户信息

当然也可以同时查询多个用户的信息:

import pymysql.cursors

db = pymysql.connect(host='localhost',
                     user='root',
                     password='root',
                     database='test')

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()


#条件精确查询
# sql="select * from user where name = '李四'"


sql="select * from user where name = '李四' or name = '李晓天'"


cursor.execute(sql)

#这是查询表中所有的数据
rest=cursor.fetchall()

for i in rest:
    print(i)


# 关闭数据库连接
db.close()

执行结果:

(2, '李四', '200')
(4, '李晓天', '400')

如果想查询李四和李晓天的信息,但是只返回名字和工资信息,并不返回id信息,则可以执行下面的python代码;

import pymysql.cursors

db = pymysql.connect(host='localhost',
                     user='root',
                     password='root',
                     database='test')

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

#条件精确查询
# sql="select * from user where name = '李四'"

sql="select name,gongzi from user where name = '李四' or name = '李晓天'"
cursor.execute(sql)
#这是查询表中所有的数据
rest=cursor.fetchall()
for i in rest:
    print(i)
# 关闭数据库连接
db.close()

执行结果:

('李四', '200')
('李晓天', '400')

查询没有奖金的用户

此时数据库信息为下方信息;

(1, '张三', '100', )
(2, '李四', '200', '1000')
(3, '王二麻子', '300', '2000')
(4, '李晓天', '400', )

查询没有奖金的用户代码

import pymysql.cursors

db = pymysql.connect(host='localhost',
                     user='root',
                     password='root',
                     database='test')

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

#条件查询
sql="select * from user where jiangjin<=>NULL"

cursor.execute(sql)
#这是查询表中所有的数据
rest=cursor.fetchall()
for i in rest:
    print(i)
# 关闭数据库连接
db.close()

执行结果:

(1, '张三', '100', None)
(4, '李晓天', '400', None)

本文章已经生成可运行项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值