python mysql

一、python mysql使用实例

 1、连接数据库如下:

import pymysql


conn = pymysql.connect(host='127.0.0.1',
                       port=3306,
                       user='root',
                       password='123456',
                       db='student',
                       charset='utf8mb4',
                       cursorclass=pymysql.cursors.DictCursor)

  也可以使用字典进行连接参数的管理,我觉得这样子更优雅一些:

import pymysql


config = {
          'host':'127.0.0.1',
          'port':3306,
          'user':'root',
          'password':'123456',
          'db':'rxz',
          'charset':'utf8mb4',
          'cursorclass':pymysql.cursors.DictCursor,
          }


conn = pymysql.connect(**config)

 

2、插入数据:

执行sql语句前需要获取cursor,因为配置默认自动提交,故在执行sql语句后需要主动commit,最后不要忘记关闭连接:

from datetime import date, datetime, timedelta
import pymysql


#连接配置信息
config = {
          'host':'127.0.0.1',
          'port':3306,
          'user':'root',
          'password':'123456',
          'db':'students',
          'charset':'utf8mb4',
          'cursorclass':pymysql.cursors.DictCursor,
          }

# 创建连接
conn = pymysql.connect(**config)
#执行sql语句
try:
    with conn.cursor() as cursor:
        #执行sql语句,插入记录
        sql = "insert into college_student(id,name,age,major) values(%s, %s, %s, %s)"
        cursor.execute(sql,(1,"jwy",26,"java"))
        # 没有设置默认自动提交,需要主动提交,以保存所执行的语句
        conn.commit()
finally:
    conn.close()


   3、执行查询:

from datetime import date, datetime, timedelta
import pymysql


#连接配置信息
config = {
          'host':'127.0.0.1',
          'port':3306,
          'user':'root',
          'password':'123456',
          'db':'students',
          'charset':'utf8mb4',
          'cursorclass':pymysql.cursors.DictCursor,
          }

# 创建连接
conn = pymysql.connect(**config)
#获取明天的时间
tomorrow = datetime.now().date() + timedelta(days=1)
#执行sql语句
try:
    with conn.cursor() as cursor:
        #执行sql语句,进行查询
        #sql = "SELECT name,age,major FROM college_student WHERE age >%s ;"
        sql = "SELECT *FROM college_student;"
        cursor.execute(sql)
        # 获取查询结果
        result = cursor.fetchall()
        print(result)
        # 没有设置默认自动提交,需要主动提交,以保存所执行的语句
        conn.commit()
finally:
    conn.close()


"""
[{'id': 1, 'name': 'jwy', 'age': 26, 'major': 'java'}, {'id': 2, 'name': 'wxy', 'age': 30, 'major': 'android'}, {'id': 3, 'name': 'rxz', 'age': 29, 'major': 'python'}, {'id': 4, 'name': 'wy', 'age': 31, 'major': 'android'}, {'id': 5, 'name': 'zj', 'age': 31, 'major': 'photoshop'}]

Process finished with exit code 0

"""

       

 1)获取查询结果 result = cursor.fetchone() :查询支取了一条查询结果,查询结果以字典的形式返回       

2)获取查询结果result = cursor.fetchmany(2) :从结果集中获取指定数目的记录,可以使用fetchmany方法 

3)获取查询结果result = cursor.fetchall():获取全部结果集可以使用fetchall方法

不过不建议这样使用1)和2,最好在sql语句中设置查询的记录总数3)来使用

练习:学习实例操作

实例一:实现:使用Python实现用户登录,如果用户存在则登录成功(假设该用户已在数据库中)

import pymysql


username = input("请输入用户名:")
password = input("请输入密码:")
#连接配置信息
config = {
          'host':'127.0.0.1',
          'port':3306,
          'user':'root',
          'password':'123456',
          'db':'dbtest',
          'charset':'utf8mb4',
          'cursorclass':pymysql.cursors.DictCursor,
          }

#连接
conn = pymysql.connect(**config)
#创建游标
cursor = conn.cursor()
sql = "select * from loginInfo where name='{}' and password ='{}'".format(username,password)
print(sql)
#3.执行sql语句
cursor.execute(sql)
result = cursor.execute(sql)
print(result)
#4.关闭连接,游标和连接都要关闭
cursor.close()
conn.close()
if result:
    print('登录成功!')
else:
    print('登录失败!')


"""
请输入用户名:rxz
请输入密码:123456
select * from loginInfo where name='rxz' and password ='123456'
1
登录成功!

Process finished with exit code 0
"""

三、增、删、改:conn.commit()

commit()方法:在数据库里增,删,改的时候。必须要进行提交,否则插入的时候数据不生效

插入数据

import pymysql


username = input("请输入用户名:")
password = input("请输入密码:")
#连接配置信息
config = {
          'host':'127.0.0.1',
          'port':3306,
          'user':'root',
          'password':'123456',
          'db':'dbtest',
          'charset':'utf8mb4',
          'cursorclass':pymysql.cursors.DictCursor,
          }

#连接
conn = pymysql.connect(**config)
#创建游标
cursor = conn.cursor()
#操作
#增
sql = "insert into loginInfo(name,password) values(%s,%s)"
effect_row = cursor.execute(sql,(username,password))
#同时插入多条数据
cursor.executemany(sql,[('lisi','110'),('wangwu','119')])
print(effect_row)
#一定记得commit
conn.commit()
#4.关闭连接,游标和连接都要关闭
cursor.close()
conn.close()

修改数据: 

import pymysql


username = input("请输入用户名:")
password = input("请输入密码:")
#连接配置信息
config = {
          'host':'127.0.0.1',
          'port':3306,
          'user':'root',
          'password':'123456',
          'db':'dbtest',
          'charset':'utf8mb4',
          'cursorclass':pymysql.cursors.DictCursor,
          }

#连接
conn = pymysql.connect(**config)
#创建游标
cursor = conn.cursor()
#操作
#修改数据
sql = "update loginInfo set name =%s ,password = %s where id =4"
effect_row = cursor.execute(sql,(username,password))
#一定记得commit
conn.commit()
#4.关闭连接,游标和连接都要关闭
cursor.close()
conn.close()

删除数据

import pymysql


username = input("请输入用户名:")
password = input("请输入密码:")
#连接配置信息
config = {
          'host':'127.0.0.1',
          'port':3306,
          'user':'root',
          'password':'123456',
          'db':'dbtest',
          'charset':'utf8mb4',
          'cursorclass':pymysql.cursors.DictCursor,
          }

#连接
conn = pymysql.connect(**config)
#创建游标
cursor = conn.cursor()
#操作
#删除数据
sql = "delete from loginInfo where name =%s"
effect_row = cursor.execute(sql,(username))
#一定记得commit
conn.commit()
#4.关闭连接,游标和连接都要关闭
cursor.close()
conn.close()

四、查:fetchone、fetchmany、fetchall

fetchone():获取下一行数据,第一次为首行;
fetchall():获取所有行数据源
fetchmany(4):获取4行数据

默认情况下,我们获取到的返回值是元祖,只能看到每行的数据,却不知道每一列表的是什么,这个时候可以使用以下方式来返回字典,每一行的数据都会生成一个字典

在实例化的时候,将属性cursor设置为pymysql.cursors.DictCursor,设置这个参数

cursorclass:pymysql.cursors.DictCursor,

 

在fetchone示例中,在获取数据的时候,可以理解开始的时候,有一个行指针指着第一行的上方,获取一行,它就向下移动一行,所以当行指针到最后一行的时候,就不能在获取到行的内容,所以我们可以使用如下方法来移动行指针:

cursor.scroll(1,mode='relative')  #相对当前位置移动
cursor.scroll(2,mode='absolute')  #相对绝对位置移动
第一个值为移动的行动,整数为向下移动,负数为向下移动,mode指定了是相对当前位置移动,还是相对于行首移动

使用fetchone()

import pymysql


#连接配置信息
config = {
          'host':'127.0.0.1',
          'port':3306,
          'user':'root',
          'password':'123456',
          'db':'dbtest',
          'charset':'utf8mb4',
          'cursorclass':pymysql.cursors.DictCursor,
          }

#连接
conn = pymysql.connect(**config)
#创建游标
cursor = conn.cursor()
sql = "select * from loginInfo"
cursor.execute(sql)
#3.查询数据
row = cursor.fetchone()
print(row)
#查询第二行数据
row = cursor.fetchone()
print(row)

#4.关闭连接,游标和连接都要关闭
cursor.close()
conn.close()
"""
{'id': 1, 'name': 'rxz', 'password': '123456', 'phone': '13776075901'}
{'id': 2, 'name': 'gsh', 'password': 'gsh123', 'phone': '17312978068'}

Process finished with exit code 0
"""

使用fetchall()

import pymysql


#连接配置信息
config = {
          'host':'127.0.0.1',
          'port':3306,
          'user':'root',
          'password':'123456',
          'db':'dbtest',
          'charset':'utf8mb4',
          'cursorclass':pymysql.cursors.DictCursor,
          }

#连接
conn = pymysql.connect(**config)
#创建游标
cursor = conn.cursor()
sql = "select * from loginInfo"
cursor.execute(sql)
#3.查询数据
row = cursor.fetchall()
print(row)

#4.关闭连接,游标和连接都要关闭
cursor.close()
conn.close()
"""
[{'id': 1, 'name': 'rxz', 'password': '123456', 'phone': '13776075901'}, {'id': 2, 'name': 'gsh', 'password': 'gsh123', 'phone': '17312978068'}, {'id': 3, 'name': 'gpf', 'password': '123456', 'phone': '13916578357'}, {'id': 4, 'name': 'fanbingbing', 'password': '1234567', 'phone': None}, {'id': 8, 'name': 'lisi', 'password': '110', 'phone': None}, {'id': 9, 'name': 'wangwu', 'password': '119', 'phone': None}]

Process finished with exit code 0
"""

使用fetchmany()

import pymysql


#连接配置信息
config = {
          'host':'127.0.0.1',
          'port':3306,
          'user':'root',
          'password':'123456',
          'db':'dbtest',
          'charset':'utf8mb4',
          'cursorclass':pymysql.cursors.DictCursor,
          }

#连接
conn = pymysql.connect(**config)
#创建游标
cursor = conn.cursor()
sql = "select * from loginInfo"
cursor.execute(sql)
# 获取2条数据
row = cursor.fetchmany(2)
print(row)

#4.关闭连接,游标和连接都要关闭
cursor.close()
conn.close()
"""
[{'id': 1, 'name': 'rxz', 'password': '123456', 'phone': '13776075901'}, {'id': 2, 'name': 'gsh', 'password': 'gsh123', 'phone': '17312978068'}]

Process finished with exit code 0
"""

 

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值