您的当前位置:首页正文

Python 操作mysql

2024-11-08 来源:个人技术集锦

pymysql

需要安装pymysql模块才能在python中使用MySQL

安装

pip3 install pymysql

若安装失败,需要升级pip版本

python -m pip install --upgrade pip

使用

1.执行mysql

 1 import pymysql
 2   
 3 # 创建连接
 4 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1')
 5 # 创建游标
 6 cursor = conn.cursor()
 7   
 8 # 执行SQL,并返回收影响行数  effect_row可打印
 9 effect_row = cursor.execute("update hosts set host = '1.1.1.2'")
10   
11 # 执行SQL,并返回受影响行数
12 # effect_row = cursor.execute("update hosts set host = '1.1.1.2' where nid > %s", (1,))
13   
14 # 执行SQL,并返回受影响行数
15 # effect_row = cursor.executemany("insert into hosts(host,color_id)values(%s,%s)", [("1.1.1.11",1),("1.1.1.11",2)])
16   
17   
18 # 提交,不然无法保存新建或者修改的数据
19 conn.commit()
20   
21 # 关闭游标
22 cursor.close()
23 # 关闭连接
24 conn.close()

2.获取新创建数据自增ID

增加多条数据用 executemany()     传的数据应为列表/元组中的元组,如[(),(),()]

自增ID: cursor.lastrowid

 1 import pymysql
 2   
 3 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1')
 4 cursor = conn.cursor()
 5 cursor.executemany("insert into hosts(host,color_id)values(%s,%s)", [("1.1.1.11",1),("1.1.1.11",2)])
 6 conn.commit()
 7 cursor.close()
 8 conn.close()
 9   
10 # 获取最新自增ID
11 new_id = cursor.lastrowid

3.获取查询数据

fetchall ((一条数据),)   fetchone  一条数据

 1 import pymysql
 2   
 3 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1')
 4 cursor = conn.cursor()
 5 cursor.execute("select * from hosts")
 6   
 7 # 获取第一行数据
 8 row_1 = cursor.fetchone()
 9   
10 # 获取前n行数据
11 # row_2 = cursor.fetchmany(3)
12 # 获取所有数据
13 # row_3 = cursor.fetchall()
14   
15 conn.commit()
16 cursor.close()
17 conn.close()

注意:在fetch数据时按照顺序进行,可以使用cursor.scroll(num, mode)来移动游标位置

  • cursor.scroll(1,mode='relative')  # 相对当前位置移动
  • cursor.scroll(2,mode='absolute') # 相对绝对位置移动

4. fench数据类型

默认获取的数据是元组类型,要想字典类型则要把游标设置为字典类型

 1 import pymysql
 2   
 3 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1')
 4   
 5 # 游标设置为字典类型
 6 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
 7 r = cursor.execute("call p1()")
 8   
 9 result = cursor.fetchone()
10   
11 conn.commit()
12 cursor.close()
13 conn.close()

 

注意事项:字符串拼接,不应使用%进行字符串拼接;应该进行参数的传递

 1 import pymysql
 2 
 3 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123456', db='example', charset='utf8')
 4 cursor = conn.cursor()
 5 # 字符串拼接,禁止使用,容易造成sql注入  如输入: 'name' or 1 = 1 --; 即可不用密码获得信息
 6 # inp = input("请输入班级:")
 7 # sql = 'insert into class(caption) VALUES("%s")'
 8 # sql = sql % (inp,)
 9 
10 inp = input("请输入班级:")
11 a = cursor.execute('insert into class(caption) VALUES(%s)', inp)
12 
13 conn.commit()
14 cursor.close()
15 conn.close()

 

转载于:https://www.cnblogs.com/bw13/p/5994154.html

Top