
Navicat/Pytcharm连接MySQL**>> >思维导图> »博客园**
Navicat连接MySQL
-
测试+链接数据库
-
新建库
-
新建表,新增字段+类型+约束
-
设计表:外键
-
新建查询
-
建立表模型
-
批量加注释:ctrl+?键
-
批量去注释:ctrl+shift+?键
Pytcharm连接MySQL
-
安装pymysql模块
-
代码连接
-
import pymysql # 链接 conn=pymysql.connect( host=‘localhost’, user=‘root’, password=‘123’, database=‘dbname’, charset=‘utf8’) # 编码千万不要加- 如果写成了utf-8会直接报错 autocommit = True # 这个参数配置完成后 增删改操作都不需要在手动加conn.commit了 # 游标 cursor=conn.cursor() # 执行完毕返回的结果集默认以元组显示 cursor=conn.cursor(cursor=pymysql.cursors.DictCursor) # 产生一个游标对象 以字典的形式返回查询出来的数据 键是表的字段 值是表的字段对应的信息
-
pymysql操作数据库
-
user = input("»>:").strip() pwd = input("»>:").strip() sql=‘select * from userinfo where name="%s" and password="%s"’ %(user,pwd) # 注意%s需要加引号 rows=cursor.execute(sql) # 执行sql语句,返回sql查询成功的记录数目 # 获取真实数据cursor.fetchone(),cursor.fetchall(),cursor.fetchmany(),类似管道取值,获取一条,所有,多条 print(cursor.fetchone()) # 只获取一条数据 print(cursor.fetchall()) # 获取所有的数据 返回的结果是一个列表 cursor.scroll(1,‘relative’) # 相对移动 relative相对于当前位置 往后移动几位 cursor.scroll(3,‘absolute’) # 绝对移动 absolute相对于起始位置 往后移动几位 cursor.close() conn.close()
-
sql注入问题
-
# 不要手动去拼接查询的sql语句 username = input("»>:").strip() password = input("»>:").strip() sql = “select * from user where username=’%s’ and password=’%s’”%(username,password) # 用户名正确 username »>: jason’ – jjsakfjjdkjjkjs # 用户名密码都不对的情况 username »>: xxx’ or 1=1 –asdjkdklqwjdjkjasdljad password »>: ’’ """ sql注入 就是利用注释等具有特殊意义的符号 来完成一些骚操作 后续写sql语句 不要手动拼接关键性的数据 而是让excute帮你去做拼接 """
-
增删改
-
# 增 sql = “insert into user(username,password) values(%s,%s)” rows = cursor.excute(sql,(‘jason’,‘123’)) # 修改 sql = “update user set username=‘jasonDSB’ where id=1” rows = cursor.excute(sql) """ 增和改单单执行excute并不会真正影响到数据,需要再执行conn.commit()才可以完成真正的增改 """ # 一次插入多行记录 res = cursor,excutemany(sql,[(),(),()])