Python使用pymysql操作数据库

一,安装:

在python3中,自带pip3,所以可以直接使用pip3去安装所需的模块:

pip3 install pymysql

 二,连接

import pymysql

connection = pymysql.connect(host='localhost',
                             user='root',
                             password='',
                             database='test',
                             charset='utf8mb4',
                             cursorclass=pymysql.cursors.DictCursor)  # 数据以字典方式返回

with connection:
    with connection.cursor() as cursor:
        sql = 'insert into `users` (`email`,`password`) values (%s, %s)'
        cursor.execute(sql, ('123@qq.com', '123'))
    connection.commit()

    with connection.cursor() as cursor:
        sql = 'select * from `users` where `email` = %s'
        cursor.execute(sql, ('123@qq.com',))
        res = cursor.fetchmany(3)  # 查询指定条数
        print(res)

三,同时插入多条数据:

import pymysql
config={
    "host":"localhost",
    "user":"root",
    "password":"",
    "database":"test"
}
db = pymysql.connect(**config)
cursor = db.cursor()
sql = "INSERT INTO users(username,passwd) VALUES(%s,%s)"
cursor.executemany(sql,[("ali","123"),("pdd",'321')])
db.commit()  #提交数据
cursor.close()
db.close()

四:execute 与 executemany返回的都是受影响的行数

sql = "delete from users where username=%s"
res = cursor.executemany(sql,("ali",))
print("res=",res)
#运行结果
res= 1

五:当表中有自增的主键的时候,可以使用lastrowid来获取最后一次自增的ID:

import pymysql
config={
    "host":"localhost",
    "user":"root",
    "password":"",
    "database":"test"
}
db = pymysql.connect(**config)
cursor = db.cursor()
sql = "INSERT INTO userinfo(username,passwd) VALUES(%s,%s)"
cursor.execute(sql,("ali","123"))
print("the last rowid is ",cursor.lastrowid)
db.commit()  #提交数据
cursor.close()
db.close()

#运行结果
the last rowid is 10

六:数据库查询操作:

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

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

cursor = db.cursor(cursor=pymysql.cursors.DictCursor)   # 可以在实例化cursor类的时候,将属性cursor设置为pymysql.cursors.DictCursor,也可以在连接时设置

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

cursor.scroll(1,mode='relative')  # 相对当前位置移动
cursor.scroll(2,mode='absolute') # 相对绝对位置移动
第一个值为移动的行数,整数为向下移动,负数为向上移动,mode指定了是相对当前位置移动,还是相对于首行移动
sql = "SELECT * FROM users"
cursor.execute(sql)
res = cursor.fetchall()
print(res)
cursor.scroll(0,mode='absolute') #相对首行移动了0,就是把行指针移动到了首行,否则因为指针的移动此第二次fetchall已获取不到内容
res = cursor.fetchall()  #第二次获取到的内容
print(res)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值