pymysql 模块
python
import pymysql
# 连接数据库
conn = pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
password='123',
database='db1',
charset='utf8',
cursorclass=pymysql.cursors.DictCursor # cursor=pymysql.cursors.DictCurosr:将查询结果以字典的形式返回
)
cursor = conn.cursor() # 产生一个游标对象
res = cursor.execute('select * from emp;') # 返回值为当前sql语句影响的行数,一般不用
# print(res)
# 获取命令执行的查询结果
# print(cursor.fetchone()) # 拿到一条
# 读取数据类似于文件的光标的移动
print(cursor.fetchone())
print(cursor.fetchone())
# cursor.scroll(1, 'relative') # 相对移动
cursor.scroll(5, 'absolute') # 绝对移动
print(cursor.fetchone())
pymysql 补充
python
import pymysql
conn = pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
password='123',
database='db1',
charset='utf8',
cursorclass=pymysql.cursors.DictCursor,
autocommit=False # 控制是否开启--自动提交操作--模式
)
cursor = conn.cursor()
# # 增
# sql = 'insert into dep(id,name) values(%s,%s)'
# rows = cursor.execute(sql, ('204', '管理部'))
# # rows = cursor.executemany(sql,[('205','监督部'),('206','法律部'),(),(),()...]) # 一次添加多个数据
# print(rows)
# conn.commit() # 提交操作
# # 修改
# sql = 'update emp set name="jasonNB" where id=1'
# rows = cursor.execute(sql)
# print(rows)
# conn.commit() # 提交操作
# 删除
# sql = 'delete from dep where id=204'
# rows = cursor.execute(sql)
# print(rows)
# conn.commit() # 提交操作
# # 查询
# sql = 'select * from emp where id>3'
# rows = cursor.execute(sql)
# print(rows)
# for i in cursor.fetchall():
# print(i)
"""
补充知识:
对数据库的增删改是非常严肃的问题,使用需要人为再确认才能真正生效!-> conn.commit() # 提交操作 或者 开启自动提交操作模式
而对应查操作,直接执行!
"""
sql 注入问题
python
import pymysql
# 连接数据库
conn = pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
password='123',
database='db1',
charset='utf8',
cursorclass=pymysql.cursors.DictCursor
)
cursor = conn.cursor()
while 1:
usename = input('名字>>>')
id = input('ID>>>')
sql = "select * from emp where name=%s and id=%s"
# 不要自己做拼接,用%占位即可,然后让execute帮忙检查是否合法同时它会自动拼接
rows = cursor.execute(sql, (usename, id))
if rows:
print('登录成功!')
else:
print('登录失败')