游标

新手学习python(十)操作数据库MySQL

血红的双手。 提交于 2019-12-05 10:54:38
import pymysql #导入pymysql模块 coon=pymysql.connect( #连接数据库 host='192.168.13.4',user='abc',passwd='123456', #host为数据库的ip port=3306,db='abc',charset='utf8' #port必须写int类型,charset必须写utf8 ) cur=coon.cursor() #建立游标 #cur = coon.cursor(cursor=pymysql.cursors.DictCursor) # 建立游标,指定cursor类型返回的是字典类型 cur.execute('select * from stu;') #执行sql语句 cur.execute('insert into stu (id,name,sex) value (23,"zhangsan","女");') #执行插入语句 coon.commit() #除select语句外,其他语句要执行commit才在数据库生效 res=cur.fetchall() #获取所有返回的结果, 它把数据库里的每一条数据放到一个list里面 #fetchone() 返回结果的第一条数据 print(res) cur.close() #关闭游标 coon.close() #关闭连接 --- #还可以先拼接sql语句

Python 操作MySQL 数据库

旧城冷巷雨未停 提交于 2019-12-05 06:08:54
Python 操作 MySQL 数据库 Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口。 Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库: GadFly mSQL MySQL PostgreSQL Microsoft SQL Server 2000 Informix Interbase Oracle Sybase 你可以访问 Python数据库接口及API 查看详细的支持数据库列表。 不同的数据库你需要下载不同的DB API模块,例如你需要访问Oracle数据库和Mysql数据,你需要下载Oracle和MySQL数据库模块。 DB-API 是一个规范. 它定义了一系列必须的对象和数据库存取方式, 以便为各种各样的底层数据库系统和多种多样的数据库接口程序提供一致的访问接口 。 Python的DB-API,为大多数的数据库实现了接口,使用它连接各数据库后,就可以用相同的方式操作各数据库。 Python DB-API使用流程: 引入 API 模块。 获取与数据库的连接。 执行SQL语句和存储过程。 关闭数据库连接。 什么是MySQLdb? MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API

使用Redis之前5个必须了解的事情

情到浓时终转凉″ 提交于 2019-12-05 04:17:37
使用Redis开发应用程序是一个很愉快的过程,但是就像其他技术一样,基于Redis的应用程序设计你同样需要牢记几点。在之前,你可能已经对关系型数据库开发的那一整个套路了然如胸,而基于Redis的应用程序开发也有许多相似的地方,但是你必须牢记以下两点——Redis是个内存数据库,同时它是单线程的。因此,在使用Redis时,你需要注意以下几点: 1. 掌控储存在Redis中的所有键 数据库的主要功能是储存数据,但是对于开发者来说,因为应用程序需求或者数据使用方法的改变,忽略存储在数据库中的某些数据是非常正常的,在Redis中同样如此。你可能忽视期满某些键,也可能因为应用程序的某个模块弃用而忘掉这些数据。 无论哪种情况,Redis都存储了一些不再使用的数据,平白无故的占用了一些空间。Redis的弱结构数据模式让集中储存的内容很难被弄清,除非你为键使用一套非常成熟的命名法则。使用合适的命名方法会简化你的数据库管理,当你通过你的应用程序或者服务做键的命名空间时(通常情况下是使用冒号来划分键名),你就可以在数据迁移、转换或者删除时轻松的识别。 Redis另一个常见用例是作为热数据项作的第二数据存储,大部分的数据被保存在其他的数据库中,比如PostgreSQL或MongoDB。在这些用例中,当数据从主存储移除时,开发者经常会忘记删除Redis中对应的数据。这种存在跨数据存储的情况下

redis scan命令使用

早过忘川 提交于 2019-12-05 03:57:32
以前的项目中有用到redis的keys命令来获取某些key,知道看了这篇文章 https://mp.weixin.qq.com/s/SGOyGGfA6GOzxwD5S91hLw 。 安全起见,这次打算优化一下。 官网建议使用scan命令来代替。于是就用了…… 官网的scan命令介绍 http://doc.redisfans.com/key/scan.html scan命令的基本用法 cursor 用法 scan命令是一个基于游标的迭代器(cursor based iterator): scan命令每次被调用之后, 都会向用户返回一个新的游标, 用户在下次迭代时需要使用这个新游标作为 scan命令的游标参数, 以此来延续之前的迭代过程。 当 scan命令的游标参数被设置为 0 时, 服务器将开始一次新的迭代, 而当服务器向用户返回值为 0 的游标时, 表示迭代已结束。 示例 第一次迭代使用 0 作为游标, 表示开始一次新的迭代,第二次使用的是第一次迭代时返回的游标。 scan命令的回复是一个包含两个元素的数组, 第一个数组元素是用于进行下一次迭代的新游标, 而第二个数组元素则是一个数组, 这个数组中包含了所有被迭代的元素. 在第二次调用scan命令时,命令返回了游标0,表示迭代已经结束,整个数据集已经遍历完了。 以0作为游标开始一次新的迭代,一直调用scan命令,知道游标返回0

备份个清库脚本

限于喜欢 提交于 2019-12-05 02:17:32
CREATE DEFINER=`admin`@`%` PROCEDURE `reset_autoIncrement`() begin declare v_table_name varchar(100); -- 自定义变量 declare done int default false; -- 自定义控制游标循环变量,默认false declare sql_for_select varchar(500); declare my_cursor cursor for select table_name from information_schema.tables where table_schema=database(); declare continue handler for not found set done = true; -- 绑定控制变量到游标,游标循环结束自动转true open my_cursor; -- 打开游标 myloop: loop -- 开始循环体, fetch my_cursor into v_table_name; -- 将游标当前读取行的数据顺序赋予自定义变量 if done then -- 判断是否继续循环 注意:不要放在后面,直接就在fetch后面判断 leave myloop; -- 结束循环 end if; set sql_for_select =

mysql-pymysql

偶尔善良 提交于 2019-12-04 23:44:57
pymysql ### pymysql安装 >sudo pip3 install pymysql ### pymysql使用流程 1. 建立数据库连接(db = pymysql.connect(...)) 2. 创建游标对象(cur = db.cursor()) 3. 游标方法: cur.execute("insert ....") 4. 提交到数据库或者获取数据 : db.commit()/db.fetchall() 5. 关闭游标对象 :cur.close() 6. 断开数据库连接 :db.close() ### 常用函数 ***参考代码 day16/mysql.py*** ***参考代码 day16/read_db.py*** ***参考代码 day16/write_db.py*** >db = pymysql.connect(参数列表) >>host :主机地址,本地 localhost >>port :端口号,默认3306 >>user :用户名 >>password :密码 >>database :库 >>charset :编码方式,推荐使用 utf8 > 数据库连接对象(db)的方法 >> cur = db.cursor() 返回游标对象,用于执行具体SQL命令 sql='select....%s.%s' #sql语句命令 str cur.execute(sql命令,

python-数据库

徘徊边缘 提交于 2019-12-04 18:01:38
# # 用python操作数据库# import pymysql #先安装mysql模块,pip install pymysql# DATSBASE={# 'host':'12.0.0.1',# 'database':'',# 'user':'root',# 'password':'wangwei',# 'charset':'utf-8mb4'# }# db=pymysql.connect( 'host', 'database','user', 'password')# #等价于# db=pymysql.connect(**DATSBASE)## # 游标:游标(cursor):系统为用户开通的一个数据缓冲区,用于存放SQL语句执行结果。用户使用的sql会逐一的在游标中获取记录,并赋值给主变量,# # 交由Python进一步处理,一组主变量只能存放一条记录。# #查询# curson =pymysql.cursors()# sql="select * from student"# curson.execute(sql)# results=curson.fetchall()#接收游标缓冲区返回的数据# for row in results:# print(row)## #插入# sql="insert into 'class'('name') values ('高一五班')";#

游标

落花浮王杯 提交于 2019-12-04 13:23:51
1 --游标知识点 2 --1、在SELECT 语句中使用DISTINCT、 GROUP BY、 HAVING UNION 语句时, 游标将自动设定INSENSITIVE 选项。 3 --2、SCROLL表明所有的提取操作(如FIRST、 LAST、 PRIOR、 NEXT、 RELATIVE、 ABSOLUTE)都可用。如果不使用该保留字,那么只能进行NEXT 提取操作。 4 --例8.4.1: 游标演示 5 declare c_cursor scroll cursor for 6 select * from student 7 open c_cursor 8 fetch last from c_cursor 9 fetch prior from c_cursor 10 fetch absolute 2 from c_cursor 11 fetch relative 2 from c_cursor 12 fetch relative -2 from c_cursor 13 fetch first from c_cursor 14 fetch prior from c_cursor 15 fetch next from c_cursor 16 fetch c_cursor 17 close c_cursor 18 deallocate c_cursor 19 --例8.4.2

oracle学习1 基于oracle数据库的PLSQL编程以及存储过程的创建和使用视频

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-04 11:37:41
https://www.bilibili.com/video/av46777605 plsql中选择 testWindow 中可以进行测试 1、编写函数 在plsql的testwindow中   begin     dbms_output.put_line('hello,world');   end;   运行后可以在DBMS_output标签页中看到   如果在sqlplus中运行的话,需要输入一个 / 来表示输入完了,但因为sqlplus默认是不打开显示的,需要输入 set serveroutput on 2、变量赋值 -- Created on 2019/11/14 by LENOVO declare --姓名 V_NAME VARCHAR2(20); --薪水 V_SAL NUMBER; --地址 V_ADDR VARCHAR2(200); begin --直接赋值 V_NAME:='ADAM'; V_SAL:=1590; --语句赋值 select 'hello' into v_addr from dual; --打印输出 DBMS_OUTPUT.PUT_LINE('姓名:'||v_name||',薪水:'||v_sal); end; 3、两个变量该怎么写,另外声明的对象类型是什么样,去【表名】【字段名】【%TYPE】来定义 declare --姓名 V_NAME

PLSQL编程

回眸只為那壹抹淺笑 提交于 2019-12-04 09:25:36
PLSQL编程 一、变量 声名变量 变量名 变量类型(变量长度) 例如:v_name varchar2(20); 变量赋值 2.1 直接赋值 v_name varchar2(20) := '张三' 2.2 语句赋值,使用select...into...赋值 -- 打印人员个人信息,包括:姓名、薪水、地址 DECLARE --姓名,直接赋值 v_name VARCHAR2(20) := '张三'; --薪水 v_sal NUMBER; --地址 v_addr ARCHAR2(200); BEGIN v_sal := 1580; --语句赋值 SELECT '字段名' INTO v_addr FROM dual; --打印输出 dbms_output.put_line('姓名:'||v_name||',薪水:'||v_sal||',地址:'||v_addr); END; 引用型变量 变量的类型和长度取决于表中字段的类型和长度 通过表明.字段名%TYPE指定变量的类型和长度,例如:v_name emp.name%TYPE; -- 查询emp表中7839号员工的个人呢信息,包括姓名和薪水 DECLARE --姓名 v_name emp.name%TYPE := '张三'; --声名变量直接赋值 --薪水 v_sal emp.sal%TYPE; BEGIN select ename,sal