Py004-03-02pymysql增删改查

CRUD操作

  • 要使用execute来防止sql注入
  • 增删改 必须commit才能生效
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import pymysql

# 建立链接
conn=pymysql.connect(
host='localhost',
port=3306,
user='root',
password='123456',
db='mydb2',
charset='utf8'
)


# 拿到游标
cursor=conn.cursor()

# 执行sql语句
# 增删查
sql='insert into user values(null,%s,%s)'

# 插入一条
# rows=cursor.execute(sql,('bbb','123'))
# print(rows) # 打印 1

# 插入多条
# rows=cursor.executemany(sql,[('axx','333'),('bxx','444')])
# print(rows) # 打印 2

conn.commit()
# 关闭
cursor.close()
conn.close()

查询

  • fetchone查一条默认返回以元组的形式
  • cursor = conn.cursor(pymysql.cursors.DictCursor) 这样返回字典格式的数据
  • fetchmany(n) n代表取的条数
  • fetchall() 取所有
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import pymysql

# 建立链接
conn=pymysql.connect(
host='localhost',
port=3306,
user='root',
password='123456',
db='mydb2',
charset='utf8'
)


# 拿到游标 默认返回元祖的格式
cursor=conn.cursor()
# 返回字典的格式
# cursor = conn.cursor(pymysql.cursors.DictCursor)

# 查询
sql='select * from user;'
rows=cursor.execute(sql)
# 取得结果
res = cursor.fetchone()
res2 = cursor.fetchone()
res3 = cursor.fetchone()
print(res)
print(res2)
print(res3)

conn.commit()
# 关闭
cursor.close()
conn.close()

光标位置

  • scroll(index,mode=’absolute’)
  • scroll(index,mode=’relative’)
1
2
cursor.scroll(3,mode='absolute') # 相对绝对位置移动 从头数3个取
print(cursor.fetchone())
1
2
3
print(cursor.fetchone())
cursor.scroll(2,mode='relative') # 相对相对位置移动 从上一条取出记录数2个取
print(cursor.fetchone())

获取插入之前数据的id

  • cursor.lastrowid
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import pymysql

# 建立链接
conn=pymysql.connect(
host='localhost',
port=3306,
user='root',
password='123456',
db='mydb2',
charset='utf8'
)


# 拿到游标
cursor=conn.cursor()

# 执行sql语句
# 增删查
sql='insert into user values(null,%s,%s)'

# 插入多条
rows=cursor.executemany(sql,[('axx','333'),('bxx','444')])
print(cursor.lastrowid) # 打印插入之前id的值

conn.commit()
# 关闭
cursor.close()
conn.close()