day83-pymysql操作mysql,pycharm安装pymysql的方法(驱动)

# 1.pymysql连接mysql校验用户名和密码:
import pymysql
usn = input('请输入用户名:')
psd = input('请输入密码:')
# pymysql连接MySQL,得到一个连接
conn = pymysql.connect(
    host='localhost',
    port=3306,      #数字类型
    user='root',
    password='123',
    database='db1',
    charset='utf8'  #注意是utf8不是utf-8
                )
cursor = conn.cursor()          #光标对象
#不推荐此写法
# sql = "select * from userinfo where username='%s'and password='%s'"%(usn,psd)     #sql语句
# ret = cursor.execute(sql)       #光标执行sql语句,拿到行数
#推荐下面传参的写法
sql = "select * from userinfo where username=%s and password=%s"     #sql语句
ret = cursor.execute(sql,[usn,psd])       #让pymysql帮忙拼接字符串,避免出错,使用列表和元祖都可以
print(ret)
if ret:
    print('登录成功')
else:
    print('登录失败')

cursor.close()      #关闭对象
conn.close()        #关闭连接

# 2.增:  增删改都需要commit,查不需要。
import pymysql
conn = pymysql.connect(
    host='localhost',
    port=3306,
    user='root',
    password='123',
    database='db1',
    charset='utf8'
)
cursor = conn.cursor()

sql = 'insert into userinfo(username,password) values(%s,%s)'
cursor.execute(sql,['tommy','777'])
conn.commit()   #提交,注意这里是提交!!!!!!

cursor.close()
conn.close()

#3.返回字典格式数据:将结果作为字典返回的光标
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

#4.失败回滚
#在执行增删改操作时,如果前面的操作不成功,可以使用 rollback() 回滚取消操作。
sql = 'insert into userinfo(username,password) values(%s,%s)'
try:
    # 尝试执行SQL语句
    cursor.execute(sql, [usn,psd])
    # 如果上面代码没问题,就提交事务
    conn.commit()
except Exception as e:
    #上面尝试执行的代码有问题,把结果作为e返回
    print('有错误',str(e))
    # 接着回滚事务
    conn.rollback()

#5.获取刚插入数据的ID(连表操作时会用到)
    # 提交事务
    conn.commit()
    # 提交事务之后,才可以获取刚插入的数据的ID
    last_id = cursor.lastrowid

#6.批量执行
    data = [("Alex", 18), ("Egon", 20), ("Yuan", 21)]
    cursor.executemany(sql, data)

#7.删
    sql = "DELETE FROM userinfo WHERE id=%s;"
    cursor.execute(sql, [4])
    conn.commit()

#8.改
    sql = 'update userinfo set username=%s where id=%s'
    cursor.execute(sql,['ttt',1])
    conn.commit()

#9.获取数据:
    #9.1 获取单条数据,结果是字典,k是数据库的字段名,v是值
    sql = 'select * from userinfo where id = %s'
    cursor.execute(sql,[1])
    ret = cursor.fetchone()
    print(ret) #{k1:v1,k2:v2}
    # 9.2 获取多条数据,结果是字典列表,一个字典就是一行数据。
    sql = 'select * from userinfo'
    cursor.execute(sql)
    ret = cursor.fetchall()
    print(ret) #[{k1:v1,k2:v2},{k1:v1,k2:v2}......]

#10.进阶用法
    # 可以获取指定数量的数据
    cursor.fetchmany(3)
    # 光标按绝对位置移动1,也就是移动到第一行
    cursor.scroll(1, mode="absolute")
    # 光标按照相对位置(当前位置)移动1,也就是移动到下一行
    cursor.scroll(1, mode="relative")

#11.pycharm安装pymysql的方法

#12.pycharm连接mysql的方法,安装驱动,,URL后面添加?serverTimezone=GMT

#13.pycharm的database按钮

14.sql注入问题:通过传参解决:cursor.execute(sql,[usn,psd])

原文地址:https://www.cnblogs.com/python-daxiong/p/12572159.html