pymysql
Posted 黎明NB
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pymysql相关的知识,希望对你有一定的参考价值。
一IDE 可视化工具
二 数据库备份
三pymysql的使用
一IDE 可视化工具
生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具
下载链接:https://pan.baidu.com/s/1bpo5mqj
掌握: #1. 测试+链接数据库 #2. 新建库 #3. 新建表,新增字段+类型+约束 #4. 设计表:外键 #5. 新建查询 #6. 备份库/表 #注意: 批量加注释:ctrl+?键 批量去注释:ctrl+shift+?键
二数据库备份
1.物理备份:直接复制数据库文件,适用于大型数据库环境,但不能恢复到异构系统中。
2.逻辑备份:备份的是建表、建库、出入等操作所执行的SQL 语句,适用于中小型数据库,效率相对比较低。
3.导出表:将表导入到文本文件中。
使用mysqldump实现逻辑备份:
mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql # 备份单个数据库: # mysqldump -uroot -p123456. day47 > D:\\47.sql # 备份多个数据库 # mysqldump -uroot -p123456. --databases day47 db43 db42 > D:\\47_43_42.sql #备份所有数据库 # mysqldump -uroot -p123456. --all-databases > D:\\all.sql # 把数据引入数据库内 # (方法一)mysql -uroot -p123456. day47< D:\\47.sql # (方法二)use database day47
SET SQL_LOG_BIN=0;#停止使用日志文件
# source 需要导入数据库的地址
#导入很多数据库 # mysql -uroot -p123456. < D:\\47_43_42.sql 注:这些都是在终端的界面上使用
数据库里面的表操作:
# 关于表的操作(把表导出来需要配置下:在 secure_file_priv=\'E:\\\\\') # 导出表 # select * from user into outfile\'E:\\userinfo.txi\' fields terminated by \',\' lines terminated by \'\\n\'; # 导入表 load data infile \'文件的地址\' into table school.student1 fields terminated by \',\'#定义字段分隔符 optionally enclosed by \'"\'#定义字符串使用什么符号括起来 lines terminated by \'\\n\'; #定义换行符
三 pymysql 的使用
1 基本使用
#1 基本使用 # import pymysql # conn=pymysql.connect(host=\'localhost\',user=\'root\',password=\'\',database=\'day47\')#链接导数据库 # cursor=conn.cursor() #拿到游标,即mysql > # # sql=\'select * from user where id>1;\' # rows=cursor.execute(sql) #拿到受影响的行数 # print(\'%s rows in set (0.00 sec)\' %rows) # # cursor.close() # conn.close()
2 小练习(判断是否登录成功)
# import pymysql # user=input(\'用户名>>: \').strip() # pwd=input(\'密码>>: \').strip() # # #链接,拿到游标 # conn=pymysql.connect(host=\'localhost\',user=\'root\',password=\'\',database=\'day47\') # cursor=conn.cursor() #拿到游标,即mysql > # # #执行sql # sql=\'select * from user where user="%s" and password="%s";\' %(user,pwd) # print(sql) # rows=cursor.execute(sql) #拿到受影响的行数 # # print(\'%s rows in set (0.00 sec)\' %rows) # cursor.close() # conn.close() # # if rows: # print(\'登录成功\') # else: # print(\'登录失败\')
3 sql 注入及解决方案
#sql注入 # import pymysql # user=input(\'用户名>>: \').strip() # pwd=input(\'密码>>: \').strip() # conn=pymysql.connect(host=\'localhost\',user=\'root\',password=\'\',database=\'day47\') # cursor=conn.cursor() # # sql=\'select * from user where user="%s" and password="%s";\' %(user,pwd) # print(sql) # rows=cursor.execute(sql) # cursor.close() # conn.close() # if rows: # print(\'登录成功\') # else: # print(\'登录失败\')
#解决sql注入 # import pymysql # user=input(\'用户名>>: \').strip() # pwd=input(\'密码>>: \').strip() # conn=pymysql.connect(host=\'localhost\',user=\'root\',password=\'\',database=\'day47\') # cursor=conn.cursor() # # sql=\'select * from user where user=%s and password=%s;\' # rows=cursor.execute(sql,[user,pwd]) # print(rows) # cursor.close() # conn.close() # if rows: # print(\'登录成功\') # else: # print(\'登录失败\')
4 增删改语句
# import pymysql # conn=pymysql.connect(host=\'localhost\',user=\'root\',password=\'\',database=\'day47\',charset=\'utf8\')#设置charset后可以输入中文 # cursor=conn.cursor() # sql=\'insert into user(user,password) values(%s,%s);\' # rows=cursor.execute(sql,(\'alex\',\'123\'))#插入单条数据 # rows=cursor.executemany(sql,[(\'yuanhao\',\'123\'),(\'laowu\',\'123\'),(\'kgf\',\'12323\')])#插入多个数据 # print(\'%s row in set (0.00 sec)\' %rows) # conn.commit()#这个是把数据从内存放到数据库里 # cursor.close() # conn.close()
5查数据
# 查:fetchone,fetchmany,fetchall # import pymysql # conn=pymysql.connect(host=\'localhost\',user=\'root\',password=\'\',database=\'day47\',charset=\'utf8\') # cursor=conn.cursor() # sql=\'select * from user;\' # rows=cursor.execute(sql) #查单条 # res1=cursor.fetchone() # res2=cursor.fetchone() # res3=cursor.fetchone() # print(res1[0]) # print(res2) # print(res3) #查多条 # print(cursor.fetchmany(3)) # print(cursor.fetchone()) #查所有 # print(cursor.fetchall()) # print(cursor.fetchone()) #光标的移动 # print(cursor.fetchall()) # cursor.scroll(1,mode=\'absolute\')#光标移动绝对位置 # print(cursor.fetchone()) # cursor.scroll(3,mode=\'absolute\') # print(cursor.fetchone()) # print(cursor.fetchone()) # print(cursor.fetchone()) # cursor.scroll(-2,mode=\'relative\')#光标移动相对位置 # print(cursor.fetchone()) # print(\'%s row in set (0.00 sec)\' %rows) # cursor.close() # conn.close()
6 最后一个id号
import pymysql conn=pymysql.connect(host=\'localhost\',user=\'root\',password=\'\',database=\'day47\',charset=\'utf8\') cursor=conn.cursor() sql=\'insert into user(user,password) values(%s,%s);\' rows=cursor.execute(sql,(\'alex\',\'123\')) # rows=cursor.executemany(sql,[(\'yuanhao\',\'123\'),(\'laowu\',\'123\'),(\'kgf\',\'12323\')]) conn.commit() print(cursor.lastrowid)#查看最后一个的id号 cursor.close() conn.close()
以上是关于pymysql的主要内容,如果未能解决你的问题,请参考以下文章
运行 tkinter+pymysql 脚本时出现 pymysql.err.ProgrammingError