游标

python:数据库连接操作入门

拈花ヽ惹草 提交于 2020-04-08 06:42:21
模块 1 import pymssql,pyodbc 模块说明   pymssql和pyodbc模块都是常用的用于SQL Server、MySQL等数据库的连接及操作的模块,当然一些其他的模块也可以进行相应的操作,类似adodbapi、mssql、mxODBC等,我们在实际用的时候选择其中一个模块就好,对于每一个模块都有相应的支持版本和支持平台,大家可以自行查阅文档 https://wiki.python.org/moin/SQL%20Server 模块安装 1 pip install pymssql   关于pip的使用我在我的另一篇博客里提到了https://www.cnblogs.com/jyroy/p/9410593.html 模块使用   我们利用python来进行数据库的操作,那么第一步就应该是连接数据库,这里我们用pymssql模块中的connect方法连连接,在pyodbc模块中同样也是利用connect方法。 使用 connect 创建连接对象 connect.cursor 创建游标对象,SQL语句的执行基本都在游标上进行 cursor.executeXXX 方法执行SQL语句, cursor.fetchXXX 获取查询结果等 调用 close 方法关闭游标 cursor 和数据库连接    pymssql模块连接 ''' pymssql模块连接SQL

使用Mysql 存储过程和游标进行同步数据

半世苍凉 提交于 2020-04-07 09:50:12
-- UpdateUserData是同步数据需要具体执行的步骤,AsyncUserData是控制UpdateUserData的条件。 DROP PROCEDURE IF EXISTS UpdateUserData; DROP PROCEDURE IF EXISTS AsyncUserData; DELIMITER // CREATE PROCEDURE `UpdateUserData`(IN id int(11)) BEGIN DECLARE classidstr VARCHAR(500); DECLARE gradeidstr VARCHAR(500); DECLARE stageidstr VARCHAR(500); DECLARE childidstr VARCHAR(500); select CONCAT("[", GROUP_CONCAT( "\"",tb_child.class_id ,"\""), "]") into classidstr from tb_child where patriarch_id=id; select CONCAT("[", GROUP_CONCAT(tb_child.grade_id), "]") into gradeidstr from tb_child where patriarch_id=id; select CONCAT("[",

python中数据库的操作终结

左心房为你撑大大i 提交于 2020-04-06 12:53:11
1.什么是数据库: 数据库是按照数据结构来组织存储和管理数据的仓库2.mysql用户设置: (1).进入数据库:mysql -u root -p 然后输入密码:xxxxx (2).里面有个user表存储的就是表的信息: desc user; (3)创建用户 1.INSERT INTO mysql.user(Host, User, authentication_string, ssl_cipher, x509_issuer, x509_subject) VALUES ('主机名', '用户名', PASSWORD('密码'), '', '', ''); 由于 mysql 数据库的 user 表中,ssl_cipher、x509_issuer 和 x509_subject 这 3 个字段没有默认值, 所以向 user 表插入新记录时,一定要设置这 3 个字段的值,否则 INSERT 语句将不能执行。 在8.0的版本里面已经不支持password函数加密了可以使用MD5或者其他的函数进行加密 2.CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码'; 在创建的过程中,只给出了用户名,而没指定主机名,那么主机名默认为“%”,表示一组主机,即对所有主机开放权限 使用这个创建用户时必须有INSERT 权限或全局 CREATE USER 权限。 3.GRANT

oracle中表空间管理,游标

≡放荡痞女 提交于 2020-04-05 19:58:59
一、表空间 oracle使用表空间来管理数据库的对象(表,序列,过程,函数,游标等)。 oracle的逻辑结构(看不见的):oracle数据库 =》 表空间 =》 表 序列 过程等对象。 oracle的物理结构(能看见):oracle 数据库 =》oracle的数据文件=》数据段=》数据区间=》数据块 。 oracle的数据文件分三种: 1、控制文件,以ctl结尾,控制文件中存储oracle运行所需要的字典,用户等对象。 2、日志文件,以log存储oracle操作产生的日志文件,还包含oracle的重做日志。 3、数据文件,存储用户或者系统创建的对象 表空间也是对象,需要存储到数据文件中,所以创建表空间的时候需要指定使用哪个数据文件。 创建表空间的语法: create tablespace 表空间名称 datafile '存储的位置\文件名.dbf' 指定表空间使用的数据文件,如果文件不存在会自动创建 size 50m 表空间的初始大小 autoextend on next 30m 表空间如果空间不够用了,下次自动扩展的大小 maxsize 300m指定表空间的最大存储空间; 例子: 1 -- 创建表空间 2 create tablespace tab_test01 3 --指定使用的数据文件 4 datafile 'D:\test_tab\test01.dbf' 5 -

pymysql模块

让人想犯罪 __ 提交于 2020-04-03 08:02:25
  在python2中mysql的模块是mysqldb,python2则开始使用pymysql。   https://www.python.org/dev/peps/pep-0249/  为python db API的官方文档。 连接对象conncet   创建一个连接数据库的构造函数,返回一个连接对象,需要一些数据库方面的参数(host,user,passwd,db)。 连接方法   连接对象会返回一些方法   .close()     马上关闭连接。从这个时间点开始,连接不可用,如果还有对连接的操作,则会出现error异常。如果修改数据后没有commit后直接close,则修改无效。   .commit()     向db提交pending状态的修改操作。如果db支持auto-commit特性,则一开始就要关闭commit,但可以通过接口来打开它。   .rollback()     这个方法会使db回滚到所有pending操作的开始。   .cursor()     使用这个连接返回一个新的游标对象。 游标对象cursor   这些对象用来管理数据库写入操作和返回输出。游标是基于连接的,同一连接的不同游标,彼此的操作都是即时可见的。 游标方法   .execute(operation)     准备和执行一个数据库操作(查询或命令)。   .fetchone()    

php常用的优化手段

孤街醉人 提交于 2020-04-02 06:25:22
由于工作码成狗,抽闲整理了下内容, 以下是网上流传比较广泛的30种SQL查询语句优化方法: 1、应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。 2、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 3、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from t where num=0 4、尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num=10 or num=20 可以这样查询: select id from t where num=10 union all select id from t where num=20 5、下面的查询也将导致全表扫描:(不能前置百分号) select id from t where name like '%abc'; 若要提高效率,可以考虑全文检索。 6、in 和 not in 也要慎用,否则会导致全表扫描,如:

关于VIM粘贴板

 ̄綄美尐妖づ 提交于 2020-03-25 12:44:34
3 月,跳不动了?>>> 如果只是想使用系统粘贴板的话直接在输入模式按Shift+Insert(粘贴)就可以了,下面讲一下 vim 的粘贴板的基础知识,有兴趣的可以看看,应该会有所收获的。 vim 帮助文档里与粘贴板有关的内容如下: vim 有12个粘贴板,分别是0、1、2、...、9、a、“、+;用:reg命令可以查看各个粘贴板里的内容。在 vim 中简单用y只是 复制 到“(双引号)粘贴板里,同样用p粘贴的也是这个粘贴板里的内容; 要将 vim 的内容 复制 到某个粘贴板,需要退出编辑模式,进入normal模式后,选择要 复制 的内容,然后按"Ny(注意带引号)完成 复制 ,其中N为粘贴板号(注意是按一下双引号,然后按粘贴板号最后按y),例如要把内容 复制 到粘贴板a,选中内容后按"ay就可以了,有两点需要说明一下: 1、“号粘贴板(临时粘贴板)比较特殊,直接按y就 复制 到这个粘贴板中了,直接按p就粘贴这个粘贴板中的内容; 2、+号粘贴板(上面显示是“-)是系统粘贴板,用"+y将内容 复制 到该粘贴板后可以使用 Ctrl+V将其粘贴到其他文档 (如firefox、gedit)中,同理,要把在其他地方用Ctrl+C或右键 复制 的内容 复制 到 vim 中, 需要在正常模式下按"+p ;要将 vim 某个粘贴板里的内容粘贴进来,需要退出编辑模式,在正常模式按"Np

MySQL的存储过程联系

隐身守侯 提交于 2020-03-20 00:10:16
BEGIN #Routine body goes here...   declare tmp0 VARCHAR(1000); declare tmp1 VARCHAR(1000);   declare done int default -1;-- 用于控制循环是否结束   /* 声明游标 */   declare myCursor cursor for select name,address from ads_building_info;   /* 当游标到达尾部时,mysql自动设置done=1 */ declare continue handler for not found set done=1;   /* 打开游标 */   open myCursor;  /* 循环开始 */   myLoop: LOOP /* 移动游标并赋值 */       fetch myCursor into tmp0,tmp1;       if done = 1 then       leave myLoop;       end if;       /* do something */       -- 循环输出信息      insert into test_demo (name,address) VALUES (tmp0,tmp1);    end loop myLoop; close

Python pymysql模块

谁说胖子不能爱 提交于 2020-03-18 06:59:52
pymysql模块 1.什么是pymysql:PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。 2.pymysql模块是第三方的需要自己安装: # 1.安装:pip3 insatll pymysql 安装pynysql库 3.基本语法使用 # 导入pymysql模块 import pymysql # 连接到数据库 conn = pymysql.connect( host = '127.0.0.1', # 数据库ip地址 port = 3306, # 数据库端口号 user = 'root', # 用户名 password = '123', # 密码 database = 'day38', # 数据库 charset = 'utf8', # 编码千万不要加- 如果写成了utf-8会直接报错 autocommit = True # 这个参数配置完成后 增删改操作都不需要在手动加conn.commit()了 ) # 产生游标对象 cursor = conn.cursor(pymysql.cursors.DictCursor) # 产生一个游标对象 每行数据 以字典的形式或列表套元组展现 键是表的字段名 值是表的字段值,不设置查询结果解释元组或元组套元组 # sql语句拼接 sql = sql语句 # 例:#

Python 操作 SQL 数据库 (ORCAL)

扶醉桌前 提交于 2020-03-16 18:37:14
MySQLdb.connect是python 连接MySQL数据库的方法,在Python中 import MySQLdb即可使用,至于connect中的参数很简单: host:MySQL服务器名 user:数据库使用者 password: 用户登录 密码 db:操作的数据库名 charset:使用的字符集(一般是gb2312) cursor = db.cursor() 其实就是用来获得python执行Mysql命令的方法,也就是 我们所说的操作游标 下面cursor.execute则是真正执行My SQL语句 ,即查询TABLE_PARAMS表的数据。 至于fetchall()则是接收全部的返回结果行 row就是在python中定义的一个变量,用来接收返回结果行的每行数据。同样后面的r也是一个变量,用来接收row中的每个字符,如果写成C的形式就更好理解了 for(string row = ''; row<= cursor.fetchall(): row++) for(char r = ''; r<= row; r++) printf("%c", r); 大致就是这么个意思! 以下实例链接Mysql的TESTDB数据库: #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb