pymysql 模块!
pymysql模块时一个第三方模块!需要下载:
pymysql的基本使用:
import pymysql
conn = pymysql.connect(
user = 'root',
password = '123',
host = '127.0.0.1', # ip地址
port = 3306, # 端口
charset = 'utf8',
database = 'day36_1'
)
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)# 产生游标对象
# cursor=pymysql.cursors.DictCursor 将查询出来的结果制成字典的形式返回
sql = "select * from userinto"
res = cursor.execute(sql) #执行sql语句
res = cursor.fetchone() # 打印一条数据
res = cursor.fetchall() # 可以打印里面的所有数据
res = cursor.fetchmany(2) #制定获取几条数据,如果数字超了也不报错
print(res)
cursor.scroll(2, 'relative') #相对移动 , 基于指针所在位置, 往后偏移
cursor.scroll(3, 'absolute') #绝对移动,基于起始位置往后偏移
print(cursor.fetchall())
我们可以通过python导入模块来连接数据库,进行登陆注册功能,在使用时sql会遇到注入问题
sql注入问题 利用特殊符号和注释语法 巧妙的绕过真正的sql校验,是用户数据不安全
关键性的数据 不要自己手动去拼接 而是交由execute帮你去做拼接
import pymysql
conn = pymysql.connect(
user = 'root' ,
password = '123',
host = '127.0.0.1',
port = 3306,
database = 'day36_1',
charset = 'utf8'
)
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
#获取用户名和密码,然后取数据库中校验
username = input('username>>>:').strip()
password = input('password>>>:').strip()
sql = "select * from userinto where name=%s and password=%s"
print(sql)
cursor.execute(sql, (username, password)) #交由execute帮你去做拼接,解决注入问题
res = cursor.fetchall()
if res:
print(res)
else:
print('username or password error!')
我们也可以利用pycharm来操作数据库文件的增删改查!
针对增 删 改操作 执行重要程度偏高
你如果真想操作 必须有一步确认操作(commit)
import pymysql
conn = pymysql.connect(
user = 'root',
passwd = '123456',
db = 'day36',
host = '127.0.0.1',
port = 3306,
charset = 'utf8',
autocommit = True # 自动提交确认
)
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
# #查: 获取用户输入的用户名和密码 然后取数据库中校验
# username = input('username>>>:').strip()
# password = input('password>>>:').strip()
# # sql = "select * from userinfo where name='%s' and password= '%s'"%(username,password)
# sql = "select * from userinfo where name=%s and password= %s"
# print(sql)
# 增
sql = "insert into userinfo(name,password,dep_id) values('jason',789,1)"
# 改
# sql = "update userinfo set name='egondsb' where id = 6"
# 删除
# sql = "delete from userinfo where id= 1"
res = cursor.execute(sql)
# conn.commit() # 确认当前操作 真正的同步到数据库
print(res)