复习Python DB-API

一、python的DB-API

  1.Python的DB-API,为大多数的数据库实现了接口,使用它连接各数据库后,就可以用相同 的方式操作各数据库。

  Python DB-API使用流程:

       1. 引入API模块。 2. 获取与数据库的连接。 3. 执行SQL语句和存储过程。 4. 关闭数据库连接。

       2.Python操作mysql

  安装包: MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的。 pip好像是不支持安装MySQLdb的,我们可以通过网站下载安装, 下载地址:https://pypi.python.org/pypi/MySQL-python/1.2.5 分别对应有windows和源码安装的方法 安装依赖包: yum install –y python-devel yum install –y mysql-devel yum install –y gcc

     注:大师兄给推荐了一个连接操作MYsql工具:navicat。 好用

      Mysql的事物

  一般来说,事务是必须满足4个条件(ACID): Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、Durability(可靠性) 1、事务的原子性:一组事务,要么成功;要么撤回。 2、稳定性 : 有非法数据(外键约束之类),事务撤回。 3、隔离性:事务独立运行。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。事务的100%隔离,需要牺牲速度。 4、可靠性:软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit选项 决定什么时候吧事务保存到日志里

  mysql> show variables like 'auto%';

   +--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | auto_increment_increment | 1 | | auto_increment_offset | 1 | | autocommit | ON | | automatic_sp_privileges | ON | +--------------------------+-------+

    

  3、Mysql的常用操作

  https://note.youdao.com/share/?id=44df41885afc36e471a836ddba4f9876&type=note#/

  授权超级用户: grant all privileges on *.* to 'tangnanbing'@'%' identified by '1qaz@WSX' with grant option;  查看库: show databases;   查看都有哪些库 show databases;   查看某个库的表 use db; show tables \G;   查看表的字段 desc tb;   查看建表语句 show create table tb;   当前是哪个用户 select user();   当前库 select database();   创建库 create database db1;   创建表 create table t1 (id int, name char(40) adress varchar(30)); char(10) 'aaa ' varchar(10) 'aaa'   查看数据库版本 select version();   查看mysql状态 show status;   修改mysql参数 show variables like 'max_connect%'; set global max_connect_errors = 1000;   查看mysql队列 show processlist; select * from information_schema.processlist where info is not null; sleep的可以忽略,qurey查询的才有 创建普通用户并授权 grant all on *.* to databases1.user1 identified by '123456'; grant all on db1.* to 'user2'@'10.0.2.100' identified by '111222'; grant all on db1.* to 'user3'@'%' identified by '231222';insert into tb1 (id,name) values(1,'aming'); 更改密码 UPDATE mysql.user SET password=PASSWORD("newpwd") WHERE user='username' ; 查询 select count(*) from mysql.user; select * from mysql.db; select * from mysql.db where host like '10.0.%'; 插入 update db1.t1 set name='aaa' where id=1; 清空表 truncate table db1.t1; 删除表 drop table db1.t1; 删除数据库 drop database db1; 修复表 repair table tb1 [use frm]; 查看权限show grants for root@'localhost'; echo "select user,host,password from mysql.user" |mysql -uroot -plingxiangxiang mysql -uroot -p1234556 -e "select user,host,password into outfile '/home/mysql/1.txt' from mysql.user;" ;

  4.Mysql的连接

  1.创建数据库 create database python; 2. 授权用户 grant all privileges on *.* to xiang@’%’ identified by ‘123456’; flush privilege; conn=MySQLdb.connect(host="192.168.48.128",user="xiang",passwd="123456",db="python",charset="utf8") 比较常用的参数包括: host:数据库主机名.默认是用本地主机 user:数据库登陆名.默认是当前用户 passwd:数据库登陆的秘密.默认为空 db:要使用的数据库名.没有默认值 port:MySQL服务使用的TCP端口.默认是3306,数字类型 charset:数据库编码

  推荐大家使用函数的方式: def connect_mysql(): db_config = { 'host': '192.168.48.128', 'port': 3306, 'user': 'xiang', 'passwd': '123456', 'db': 'python', 'charset': 'utf8' } cnx = MySQLdb.connect(**db_config) return cnx

案例一:

import pymysql


# 1. 开启事务
# 2. 执行sql语句(update100, insert1000, alter10)
# 3. commit;


conn = pymysql.connect(host="192.168.48.136", port=3306, user="xiang", passwd="xiang", db="test")
cus = conn.cursor()
sql = "select * from test2;"

cus.execute(sql)
result = cus.fetchall()
print(result)
cus.close()
conn.close()


案例二:
import pymysql



class TestMysql(object):
def __init__(self):
self.dbConfig = {
"host": "192.168.48.136",
"port": 3306,
"user": "xiang",
"passwd": "xiang",
"db": "test"
}
conn = pymysql.connect(**self.dbConfig)
self.a = conn


def select(self):
print("select")

def update(self):
print("update")

if __name__ == '__main__':
conn = TestMysql()
 

转载于:https://www.cnblogs.com/iwss/p/9001094.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427740.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java se程序设计课后答案,JAVA SE程序设计及实践

实践3 类与对象实践3.4修改Menu类,增加显示普通员工、经理、管理员对应的功能菜单的方法。package com.dh.hrmanager.util;import java.util.Scanner;public class Menu {/*** 返回登陆菜单*/public void showLoginMenu() {System.out.println("\n\n\t\t欢迎进…

个人空间风格模版php,home.php这个页面风格模板在哪里修改?答案:space_home.html...

/template/default/home 空间模块模板目录editor_image_menu.htmfollow_feed.htm 广播首页follow_feed_li.htm 广播数据列表follow_user_header.htm 广播用户数据统计invite.htm 邀请模板magic_call.htm 道具-点名卡magic_detector.htm 道具-探测器magic_doodle.htm 道…

18.QT-QPlainEdit 信号与槽

QPlainEdit编辑功能 Public Slots void appendHtml ( const QString & html ) void appendPlainText ( const QString & text ) void centerCursor () void clear () void copy () void cut () void insertPlainText ( const QString & text ) void paste () void …

VS生成Cordova for Android应用之Gradle

VS生成Cordova for Android应用之Gradle 原文:VS生成Cordova for Android应用之Gradle一、Gradle简介 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。 …

进一法整数php,进一法取整、四舍五入取整、忽略小数等的取整数方法大全

PHP取整数函数常用的四种方法,下面收集了四个函数;经常用到取整的函数,今天小小的总结一下!其实很简单,就是几个函数而已~~主要是:ceil,floor,round,intvalPH…

pjax转发

pjax几大特点: 1、异步(ajax) 2、地址栏改变路径 3、实现前进和后退back和forword 如何解决:地址变了之后,万一F5刷新的问题,主要是通过后台判断是否为pjax请求,是的话做个标志,在前…

php全局cors,PHP开启CORS - slagga的个人页面 - OSCHINA - 中文开源技术交流社区

php后台响应头部代码//json头header("Content-type: application/json");//跨域header("Access-Control-Allow-Credentials: true");header("Access-Control-Allow-Origin: 跨域URL");//CORSheader("Access-Control-Request-Methods:GET, P…

嘻嘻

今天我们来聊一下如何减肥? 其实我也不知道,嘻嘻~ 开个玩笑 好了,今天我们继续来学习新的知识。 在前两篇文章中,我们接触到了索引的概念,今天我们要对索引进行一个拓展。首先我们先来看一下下面这段代码: …

mysql :完整性约束

---恢复内容开始--- 一:介绍 约束条件与数据类型的宽度一样 ,都是可选参数 作用,用于保证数据的完整性和 一致性 主要分为: primary key (pk) 标识该字段为该表的主键, 可以唯一的标识记录 foreign key (fk…

php htts cookies,Http和Https下的cookie的写入问题

session和cookie是不一样的session存储在服务器,cookie存储在客户端设置cookie:function setcookie ($name, $value null, $expire null, $path null, $domain null, $secure null, $httponly null) {}获取cookie:$_COOKIE[$sCookieName];题主的写法只是操作了服务器端的…

断言NSAssert的使用

NSAssert()的定义是 #define NSAssert(condition, desc) condition是条件表达式,值为yes或者no,在OC中规定0为假,非0就为真。 desc为异常描述,为NSString类型。 当condition为yes时程序继续运行; 当condition为no时程序…

五维图matlab,五维立体图,怎么画五维图(即以五边形反映各项水平)

一维、二维、三维、四维、五维分别是什么?线是一维的,参数是点 面是二维的,参数是线 体是三维的,参数是面 以此类推,以体为参数构成的空间就是四维空间,通常理解为时间,从很多科幻小说中可以看到…

java 做项目踩坑,web项目踩坑过程

sql函数设计:一开始本来是直接用Java的jdbc直接传输操作语句的。但后来学了存储过程发现存储过程可以提高不少的效率。就重构了自己对数据库的操作代码。包括:开启,查找,修改,关闭。开启:直接使用的构造函数…

python中主函数循环,带有菜单函数的Python主函数循环不起作用?

我现在是一名大学生,正在上python课程。我们的任务是用函数创建这个程序。main函数调用菜单,然后在main函数中编写一个循环,根据菜单函数中的用户响应访问其他函数。在我好像不能让我的循环工作。当我选择一个菜单选项时,什么都不…

在nocdb转pdb的时候遇到小bug

在nocdb转为pdb之后,发现有一个应用账号。从pdb使用expdp导出。导入其他nocdb。报错ORA-01917: user or role HUE does not exist[oraclelxtrac06 ~]$ more 1HUE.log ;;; Import: Release 12.2.0.1.0 - Production on Wed May 9 23:20:59 2018Copyright (c) 1982, 2…

matlab设计理想数字带通滤波器,基于matlab的数字带通滤波器课程设计报告

基于matlab的数字带通滤波器课程设计报告 1 西安文理学院机械电子工程系 课程设计报告 专业班级 08级电子信息工程1班 题 目 基于 MATLAB 的数字带通滤波器 学 号 学生姓名 指导教师 2011 年 12 月 西安文理学院机械电子工程系2 课程设计任务书 学生姓名 _______专业班级 _____…

php上传文件损坏,PHP 上传文件故障排除

PHP 文件上传时出现问题时,就要在表单、后台处理程序和服务器配置上找原因。最常见的故障原因有:PHP 配置不正确、服务器上的相关目录没有写权限、表单编写有问题等。如果在使用 PHP 上传时遇到问题,请参阅以下故障排除步骤:检查表…

xml序列号错误

xml序列号错误((XmlHelper.Deserialize))提示&#xff1a;XML 文档(1, 2)中有错误。{"不应有 <entryOrder xmlns>。"} 原因&#xff1a;1.缺少根目录&#xff08;<root>&#xff09;2.xml字段转换失败&#xff08;string->int&#xff09; ----------…

oracle 强制 断开,ORA-01092: ORACLE 例程终止。强行断开连接

dataguard服务器不能open&#xff0c;需要重启主服务器才能解决。如下&#xff1a;SQL> conn as sysdba;已连接到空闲例程。SQL> startup nomount;ORACLE 例程已经启动。Total System Global Area 1240186076 bytesFixed Size 453852 bytesVariable Si…

Mac远程连接服务器

方法一&#xff1a;ssh 方法二&#xff1a;commandK进入远程桌面&#xff0c;这种方式类似于windwos下的远程桌面 转载于:https://www.cnblogs.com/xiyuan2016/p/9020978.html