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+?键
View Code

二数据库备份

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

pymysql.err.InterfaceError: (0, '')解决办法

Python 与 MySQL 交互

Python 与 MySQL 交互

pymysql操作

pymysql使用