Mysql python 基础接口使用

SQL(Structure Query Language)语言是数据库的核心语言

SQL语言共分为四大类:

数据查询语言DQL 数据操纵语言DML 数据定义语言DDL 数据控制语言DCL

1. 数据定义语言DDL(Date DEFINE Language)

数据定义语言DDL 用来创建数据库中的各种对象-----表、视图、索引、同义词、聚簇等如:CREATE TABLE/VIEW/INDEX/SYN/CLUSTERDDL操作是隐性提交的!不能rollback 

2 .数据操纵语言DML(Date Manipulation Language)

主要有三种形式:

1) 插入:INSERT2) 更新:UPDATE3) 删除:DELETE

3. 数据查询语言DQL(Date QUERY Language)

数据查询语言DQL 基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块:SELECT <字段名表>FROM <表或视图名>WHERE <查询条件>

4. 数据控制语言DCL(Date CONTROL Language)

用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。

如:1) GRANT:授权。

2) ROLLBACK [WORK] TO [SAVEPOINT]:回退到某一点。回滚---ROLLBACK回滚命令使数据库状态回到上次最后提交的状态。其格式为:SQL>ROLLBACK

<1>数据操作语言(Date Manipulation Language)DML语言,实现对数据的基本操作,”增删改”。

------DML命令如果没有提交,将不会被其他会话看到 UPDATE DELETE INSERT

【此处oracle可以 mysql不行】除非在DML命令之后执行了DDL命令或DCL命令,或用户退出会话,或终止实例,此时系统会自动发出commit命令, 使未提交的DML命令提交 - 数据定义语言

可以知道,查询是自带commit的。

所以对数据进行修 改或者删除或者插入时最好都commit一下

import pymssql 
import MySQLdb 
conn = MySQLdb.connect(host='xx', user='xx', passwd='xx', db='xxx', port=3306) 
conn = pymssql.connect(host=Mssql_host, user=Mssql_user, password=Msssql_passwd, database=db_ashare, port=Mssql_port) 

conn = connectMysql() 
#cnn 建立mysql连接 登陆成功 
cur = conn.cursor() 
#使用cursor()方法获取操作游标
sql = "delete from %s" % (out_user_identity_map)

cur.execute(sql)      
#使用execute方法执行SQL原生语句 sql类型字符串   执行成功和commit无关返回会影响的行数 失败报错误

conn.commit()          
#修改删除等非查询语句需要 commit   excute不会缓存,需要一个语句连接里面连续执行

except: conn.rollback() #回滚在失败情况下操作



conn.close()         # 关闭数据库连接
 cur.close()
rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数。
commit() 提交
rollback() 回滚
cursor用来执行命令的方法:
callproc(self, procname, args):用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数
execute(self, query, args):执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数
executemany(self, query, args):执行单挑sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数
nextset(self):移动到下一个结果集

cursor用来接收返回值的方法:
fetchall(self):接收全部的返回结果行.
fetchone(self):返回一条结果行. 该方法获取下一个查询结果集。结果集是一个对象 
fetchall和fetchone的区别:
一、获取多行数据的时候
fetchall 会获取所有的数据而fetchone 只会获取1个数据
1、fetchall (('000369',), ('000370',), ('001942',), ('001943',), ('003316',))
2、fetchone  ('000369',)
二、获取每行多个数据的时候
多个数据的获取不受影响
1、fetchall (('000369', datetime.datetime(2021, 6, 24, 0, 0)), ('000370', datetime.datetime(2021, 6, 24, 0, 0)))
2、fetchone  ('000369', datetime.datetime(2021, 6, 24, 0, 0))
【需要注意点】
1、fetchall 默认获取的是多行的数据 
(1)所以是一个二层元组  当每行返回一个数据的时候即子层元组只有一个元素 按照 re[0][0]提取元素
元祖的规则 单个元素的元组 默认要在元素的后面跟上一个逗号
(2)当返回一行数据的时候 也是一个二层元组 re[0] 提取元祖
2、fetchone 只会返回一个单层的元组re[0]直接提取元祖
fetchmany(self, size=None):接收size条返回结果行.如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据.
scroll(self, value, mode='relative'):移动指针到某一行.如果mode='relative',则表示从当前所在行移动value条,如果 mode='absolute',则表示从结果集的第一行移动value条.
NULL 的判定   mysql_python 返回mysql NULL   NULL传递到python当中的表示是 None 
所以  python:if re[0][0] == None
      mysql: zd is not NULL   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值