游标

Pymysql的常见使用方法

故事扮演 提交于 2019-12-04 07:57:58
cursor.fetchone()与cursor.fetchall()的区别: cursor.fetchone():只能显示一个数据 cursor.fetchall():才能显示查出来的所有数据 Pymsql的其他常用方法 import pymysql #连接数据库 db = pymysql.connect("localhost","admin","Cesare@qq","dbpymysql") #使用cursor()方法创建一个游标对象 cursor = db.cursor() #使用execute()方法执行SQL语句 cursor.execute("SELECT * FROM order_info") # 使用fetchone() 获取一条结果数据 result = cursor.fetchone() # 只显示一行结果 #使用fetall()获取全部结果数据 data = cursor.fetchall() #关闭游标和数据库的连接 cursor.close() db.close() # 更新SQL cursor.execute(sql) db.commit() 来源: https://www.cnblogs.com/CesareZhang/p/11846883.html

在python操作数据库中游标的使用方法

倾然丶 夕夏残阳落幕 提交于 2019-12-04 06:32:18
cursor就是一个Cursor对象,这个cursor是一个实现了迭代器(def__iter__())和生成器(yield)的MySQLdb对象,这个时候cursor中还没有数据,只有等到fetchone()或fetchall()的时候才返回一个元组tuple,才支持len()和index()操作,这也是它是迭代器的原因。但同时为什么说它是生成器呢?因为cursor只能用一次,即每用完一次之后记录其位置,等到下次再取的时候是从游标处再取而不是从头再来,而且fetch完所有的数据之后,这个cursor将不再有使用价值了,即不再能fetch到数据了。 数据库支持 使用简单的纯文本只能实现有退限的功能,所需要引入数据库,完成更强大的功能,本节使用的简单数据库SQLite 。 SQLite 和PySQLite sqlite是非常著名的开源嵌入式数据库软件,它可以嵌入到其他程序中使用,并且提供SQL接口用来查询,非常方便。它的官方站点为http://www.sqlite.org。 而pysqlite 则是一个sqlite 为 python 提供的 api 接口,它让一切对于 sqlite 的操作都变得异常简单 在python2.5版本这后,SQLite的优势在于它的一个包装(PySQLite)已经被包括在标准库内,所以我们可以直接使用。 入门操作

数据库相关概念

久未见 提交于 2019-12-04 05:50:36
数据库操作流程有哪些步骤? 建立数据库对象, 连接数据库, 获取游标, 调用语句查询数据, fetchall获取游标中的所有结果集, 关闭游标, 关闭连接 什么是游标? 游标是系统为用户开设的一个数据缓存区,存放SQL语句的执行结果. 游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。 mysql高可用,乐观锁,悲观锁 ? 高可用: https://www.jianshu.com/p/cdec2019dc88 https://www.cnblogs.com/robbinluobo/p/8294782.html 通常由管理节点和数据节点组成,基于主从复制,基于共享存储,基于主机高可用等 管理节点会定时探测集群中的master节点,当master出现故障时,它可以自动将最新数据的slave提升为新的master,然后将所有其他的slave重新指向新的master。整个故障转移过程对应用程序完全透明。 乐观锁: 假定数据在某一个时间段肯定是被一个线程操作的,不会产生数据修改混乱 悲观锁: 假定数据在某一个时间段总是被多个线程操作,会产生数据修改混乱 设计数据表遵循哪些原则? 1)表名字段见名知意(有助维护理解表业务) 2)表一定要有主键,整形自增(主动获取上一条id并自增,保证主键不重复,更高效) 3)多表关联时,数据类型要保持绝对一致(类型不一致导致两个表索引失效

MySQL总结(5)

ぃ、小莉子 提交于 2019-12-04 03:38:23
视图 SELECT cust_name,cust_contact FROM customers,orders,orderitems WHERE customers.cust_id=orders.cust_id AND orderitems.order_num=orders.order_num AND prod_id='TNT2'; 假如可以把整个查询包装成一个名为 productcustomers 的虚拟表 SELECT cust_name,cust_contact FROM productcustomers #this is a 视图 WHERE prod_id='TNT2' productcustomers 是一个视图,作为视图,它不包含表中应该有的任何列或数据,它包含的是一个SQL查询(与上面用以正确联结表的相同的查询)。 😁 重用SQL语句。 😁 简化复杂的SQL操作。在编写查询后,可以方便地重用它而不必 知道它的基本查询细节。 😁 使用表的组成部分而不是整个表。 😁 保护数据。可以给用户授予表的特定部分的访问权限而不是整个 表的访问权限。 😁 更改数据格式和表示。视图可返回与底层表的表示和格式不同的 数据。 😘 与表一样,视图必须唯一命名(不能给视图取与别的视图或表相 同的名字)。 😘 对于可以创建的视图数目没有限制。 😘 为了创建视图,必须具有足够的访问权限

游标删除表

我的梦境 提交于 2019-12-04 01:03:09
本地测试数据库临时表太多无用,用循环删除表 1 declare 2 3 --i integer; 4 v_tablename varchar2(20); 5 v_sql varchar2(200); --定义表名 6 CURSOR emp_cursor IS select TABLE_NAME from user_tab_comments ;--游标 7 begin 8 --select TABLE_NAME from user_tab_comments --查询当前用户下表名 9 open emp_cursor ; --打开游标 10 loop --打开循环 11 FETCH emp_cursor into v_tablename ; --取值 12 EXIT WHEN emp_cursor%NOTFOUND; --判断游标循环 13 --dbms_output.put_line(v_tablename); --dbsm输出打印表名 14 v_sql:='drop table '|| v_tablename; --拼接删除表语句 drop 删除表空间,无需commit 15 dbms_output.put_line(v_sql); 16 execute immediate v_sql; --执行 sql语句 17 end loop; --标记循环结束 18 CLOSE emp

数据库如何优化

无人久伴 提交于 2019-12-03 21:08:23
一、数据库设计优化 1、不要使用游标。 使用游标不仅占用内存,而且还用不可思议的方式锁定表,它们可以使DBA所能做的一切性能优化等于没做。游标里每执行一次fetch就等于执行一次select。 2、创建适当的索引 每当为一个表添加一个索引,select会更快,可insert和delete却大大变慢,因为创建了维护索引需要许多额外的工作。 (1)采用函数处理的字段不能利用索引 (2)条件内包括了多个本表的字段运算时不能进行索引 3、使用事务 对于一些耗时的操作,使用事务可以达到很好的优化效果。 4、小心死锁 按照一定的次序来访问你的表。如果你先锁住表A,再锁住表B,那么在所有的存储过程中都要按照这个顺序来锁定它们。 如果某个存储过程先锁定表B,再锁定表A,这可能会导致一个死锁。 5、不要打开大的数据集 6、不要使用服务器端游标 与服务器端游标比起来,客户端游标可以减少服务器和网络的系统开销,并且还减少锁定时间。 7、不要忽略同时修改同一记录的问题 有时候,两个用户会同时修改同一记录,这样,后一个修改者修改了前一个修改者的操作,某些更新就会丢失。处理这种情况,创建一个timestamp字段,在写入前检查它,如果允许,就合并修改,如果存在冲突,提示用户。 8、尽量不要使用text数据类型 除非使用text处理一个很大的数据,否则不要使用它。因为它不易于查询,速度慢

pymysql增删改查操作

ぐ巨炮叔叔 提交于 2019-12-03 20:49:02
表结构 CREATE TABLE `students` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT '', `age` tinyint(3) unsigned DEFAULT '0', `height` decimal(5,2) DEFAULT NULL, `gender` enum('男','女','中性','保密') DEFAULT '保密', `cls_id` int(10) unsigned DEFAULT '0', `is_delete` int(11) DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO students VALUES (0,'小明',18,180.00,2,1,0), (0,'小月月',18,180.00,2,2,1), (0,'彭于晏',29,185.00,1,1,0), (0,'刘德华',59,175.00,1,2,1), (0,'黄蓉',38,160.00,2,1,0), (0,'凤姐',28,150.00,4,2,1), (0,'王祖贤',18,172.00,2,1,1), (0,'周杰伦',36,170,1,1,0), (0,

Python - MySQL 数据库连接 - PyMySQL 驱动 - 第二十五天

情到浓时终转凉″ 提交于 2019-12-03 17:22:52
序言 本文我们为大家介绍 Python3 使用 PyMySQL 连接数据库,并实现简单的增删改查。 什么是 PyMySQL? PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。 PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。 PyMySQL 安装 在使用 PyMySQL 之前,我们需要确保 PyMySQL 已安装。 PyMySQL 下载地址:https://github.com/PyMySQL/PyMySQL。 如果还未安装,我们可以使用以下命令安装最新版的 PyMySQL: pip install pymysql 数据库连接 连接数据库前,请先确认以下事项: 您已经创建了数据库 TESTDB. 在TESTDB数据库中您已经创建了表 EMPLOYEE EMPLOYEE表字段为 FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME。 连接数据库TESTDB使用的用户名为 "testuser" ,密码为 "test123",你也可以自己设定或者直接使用root用户名及其密码,Mysql数据库用户授权请使用Grant命令。 在你的机子上已经安装了 Python MySQLdb 模块。 实例: import

JDBC的ResultSet游标转spark的DataFrame,数据类型的映射以TeraData数据库为例

為{幸葍}努か 提交于 2019-12-03 16:55:40
1.编写给ResultSet添加spark的schema成员及DF(DataFrame)成员 /* spark、sc对象因为是全局的,没有导入,需自行定义 teradata的字段类型转换成spark的数据类型 */ import java.sql.{ResultSet, ResultSetMetaData} import org.apache.spark.sql.types._ import org.apache.spark.sql.{DataFrame, Row} object addDataframeMember { trait ResultSetMetaDataToSchema { def columnCount: Int def schema: StructType } implicit def wrapResultSetMetaData(rsmd: ResultSetMetaData) = { new ResultSetMetaDataToSchema { def columnCount = rsmd.getColumnCount def schema = { def tdCovert(tdDpeStr: String, precision: Int = 0, scale: Int = 0, className: String = ""): DataType = {

jango rest-framework page_size更新

ε祈祈猫儿з 提交于 2019-12-03 14:47:50
老项目是三年前写的, 这周的新项目要用上DRF的分页功能时,发现老的写法无效了。 于是看了一些文档,原来写法变了。 https://blog.csdn.net/dqchouyang/article/details/89947974 https://www.jb51.net/article/166270.htm 两种用法 一, REST_FRAMEWORK = { 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination', 'PAGE_SIZE': 10, 'MAX_PAGE_SIZE': 100, }    二, class CursorPagination(pagination.CursorPagination): """加密游标的分页""" cursor_query_param = 'cursor' # 游标(这是加密的游标) # ordering = '-id' # 从后往前取数据 ordering = 'id' page_size = 1 # 每页显示的条数    来源: https://www.cnblogs.com/aguncn/p/11800911.html