exist(了解):
exist是一个表示真假值的关键字,表示是否存在,当有exist关键字时,内层查询语句不会返回结果而是返回一个真假值,如果为True,那么外层语句将继续查询,如果为假,那么外层语句不进行查询。
Navicat的使用:
下载地址::https://pan.baidu.com/s/1bpo5mqj
这个是将sql语句封装了一款便于我们使用的软件。
Python操作sql语句:
这个时候就要使用到了pymysql这个模块
pymysql模块:
安装:pip install pymysql
代码连接:
import pymysql
连接
conn = pymysql.connect(
host='127.0.0.1',
port='3306',
user='root',
password='147258',
database='库名',
charset='utf8',
autocommit=True 这个为了让其新增,修改,删除的自提交
设置一个游标
cursor=conn.cursor()这个执行完毕后返回的结果,单个是元祖,多个是元祖套元祖。
cursorcon.cursor(cursor=pymysql.cursor.DictCursor)这样单个显示的是一个字典,多个显示是列表套字典。
pymysql来操作数据库
执行sql语句
user= input('>>>:')
pwd = input('>>>:')
sql= “select * from user where name='%s' and password='%s' % (user,pwd) 注意%s要加引号
res = cursor.excute(sql)执行sql语句,拿到返回的是查询到的条数。
获取真实数据,可以用cursor.fetchone()获取一条,fetchall()是获取多条。
cursor.scroll(1,'relative')以当前位置往后移动几位,并过滤掉移动的数据。
cursor.scroll(1,'absolute')以起始位置往后移动几位
在上面写的sql语句会造成sql注入,就是我可以用一个sql语句的注释等具有特殊意义的字符来跳过检查,正确的方法就是不要手动的拼接sql语句,
sql= “select * from user where name=%s and password=%s 引号去掉
cursor.excute(sql,(user,pwd)因为excute不止可以执行sql语句拿到返回的条数,而且还能够自动识别语句中特殊符号并且帮你做替换,但要注意,有几个%s就要有几个替换的值。
增加和删除,修改都要在写完后加一句conn.commit(),因为一般重要的数据操作,必须要提交下,如果没有这个,写完后可以执行,但表中的数据不会受影响,所以要提交下,前面设置为自提交就不用了。