pymysql模块的使用

pymysql模块的使用

import pymysql

1、连接数据库
conn = pymysql.connect(
        user='root',  # The first four arguments is based on DB-API 2.0 recommendation.

        password="123",
        host='127.0.0.1',
        database='db1',
        port=3306,)

2、产生游标
cursor = conn.cursor()
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)  # 返回结果设置成字典的形式,将字段名也返回

3、书写sql语句
sql = 'create table test1(name varchar(4), age int);'
sql = 'select * from test1;'

4、执行命令,返回值是所影响的行数,并不常用
res = cursor.execute(sql)
print(res)

5、获取结果
print(cursor.fetchone())  # 只拿一条
print(cursor.fetchall())  # 拿所有数据
print(cursor.fetchmany(3))  # 拿指定的条数

光标移动

  • cursor.scroll(1,’relative’) :相对当前光标位置,移动1位
  • cursor.scroll(1,’absolute’):相对数据起始位置,往后移动一位

sql注入问题

利用一些语法的特性,书写一些特点的语句实现固定的语法

MySQL中 利用的是MySQL的注释语法来钻了漏洞

select * from user where name = 'xxx' or 1=1 -- aasafvs
'''
日常生活中很多软件在注册的时候都不能含有特殊符号
因为怕构造出特定的语句入侵数据库,不安全
'''

敏感的数据不要做拼接

解决sql注入问题

将要获取比对的数据,以元组的形式放在sql后面,交给execute方法
sql = 'select * from user where name = %s and password=%s'
res = cursor.execute(sql,(username,password))
if res:
    print('登录成功')
    #print(cursor.fetchall())
else:
    print('登录失败,用户名或密码错误')

完整的sql配置

import pymysql

conn = pymysql.connect(
    host = '127.0.0.1',
    port = 3306,
    user = 'root',
    password = '7410',
    database = 'oldboy',  #
    charset = 'utf8', # 编码不要写utf-8
    autocommit = True
)
cursor = conn.cursor(pymysql.cursor.DictCursor)
sql = '语句'
row = cursor.execute(sql,('加入的值')) # 加入一条数据,以元组的形式
rows = cursor.executemany(sql,[('插入的值1'),('插入的值2'),('插入的值3')]) # 插入多条数据

Original: https://www.cnblogs.com/elijah-li/p/16286779.html
Author: elijah_li
Title: pymysql模块的使用

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/612110/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球