一、导入模块+建立链接python
import pymysql # 一、经过python去链接数据库 conn = pymysql.connect(host="127.0.0.1",port=3306,user="root",passwd="admin123.",db="test_python_1",charset="utf8")
二、建立游标,经过游标就能够执行sql命令mysql
# 二、建立游标 test_cursor = conn.cursor()
三、经过游标执行sql命令,插入一条数据sql
插入前的表的内容数据库
执行命令fetch
# 三、执行一个插入的命令 r = test_cursor.execute("insert into test(name,age) VALUES ('999',23)")
这里的r的值就受影响的行的数目ui
这里要注意,若是执行修改相关的命令,则必需要commit才能生效,commit操做由数据库链接的对象的操做,而不是经过游标去执行3d
# 四、提交数据 conn.commit()
查看表中的内容,已经多了一条数据指针
四、python的数据交互,由pymysql内部作参数传递对象
inp = input("请输入姓名:") r = test_cursor.execute("insert into test(name,age) VALUES (%s,34)",inp) # 这里能够用字符串拼接,也可使用pymysql内部给咱们作字符串拼接 # 字符串拼接是能够的,可是这里禁止操做的,这里会引发sql注入,因此不能这么使用 print(r) # 这里的r的意思受影响的行数
咱们看表中的数据已经更新blog
上面只传递了一个参数,若是有多个参数,该怎么传递呢?这里要传递一个元组进去
inp = input("请输入姓名:") inp_age = input("请输入年龄:") r = test_cursor.execute("insert into test(name,age) VALUES (%s,%s)",(inp,inp_age))
咱们看到数据库的表中的数据已经更新
上面的例子咱们只插入了一条数据,那么若是咱们想一次插入多条数据该怎么弄呢?解决办法看下面的例子,要用excutemany命令来执行,而后经过列表或者元组把参数传递进去
user_info_list = [ ("cui1",23), ("cui2",24), ("cui3",25) ] r = test_cursor.executemany("insert into test(name,age) values (%s,%s)",user_info_list) print(r)
咱们能够看到数据库的表中已经有数据更新
四、经过pymysql更新数据库中的内容
r = test_cursor.execute("update test set name = %s where age = 25","张国军") print(r)
咱们能够看到数据库的表中的内容已经更新
五、经过pymysql删除数据库表中的内容
r = test_cursor.execute("delete from test where age = 25") print(r)
咱们能够看到表中的数据已经更新
六、经过pymysql查询数据,若是是查数据,则不须要commit
r = test_cursor.execute("select * from test") print(test_cursor.fetchone()) print(test_cursor.fetchone()) print(test_cursor.fetchmany(2)) print(test_cursor.fetchall())
咱们注意数据库中的内容
咱们看pymysql获得的结果
咱们能够看到上面有一个指针的概念,第一条数据被取出来后,第二次在取数据,则就从第二条数据开始取,那么咱们有没有办法移动指针呢?固然有,咱们看下面的例子
七、移动指针
绝对的方式移动指针
r = test_cursor.execute("select * from test") print(test_cursor.fetchone()) test_cursor.scroll(0,mode = "absolute") # 这里的意思,absolute是绝对的意思,让指针回到0的位置 print(test_cursor.fetchone())
咱们能够看到2次取的数据是同样的
相对的方式移动指针
r = test_cursor.execute("select * from test") print(test_cursor.fetchone()) # test_cursor.scroll(0,mode = "absolute") # 这里的意思,absolute是绝对的意思,让指针回到0的位置 test_cursor.scroll(2,mode="relative") # 这里的意思,relative是相对的意思,至关当前的位置向下移动2个位置,这里若是是负数的话,是向上移动,若是是正数,则向下移动
咱们注意数据库中的表的顺序
咱们看下pymysql执行的结果