python生成数据库指令_Python学习—数据库操作
python2中操作数据库:MySQLdb
python3中操作数据库:pymysql
python接连数据库
1.创建数据库连接:
mysql.connect()函数
2.执行数据库操作:
执行数据库操作,我们要使用连接对象获得一个cursor(游标)对象:
用连接对象的cursor()方法返回一个游标对象
接下来,我们会使用cursor提供的方法来进行工作. 这些方法包括两大类:1.执行命令,2.接收返回值
执行命令:
callproc(self, procname, args):用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数
execute(self, query, args):执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数,它执行查找语句时的返回值是查找到的记录条数。
executemany(self, query, args):执行单挑sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数
nextset(self):移动到下一个结果集
接受返回值:
fetchall(self):接收全部的返回结果行.返回值也是元组,元组中的元素也是元组
fetchmany(self, size=None):接收size条返回结果行.如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据.返回结果时元组,元组的元素是整条记录的元组
fetchone(self):返回一条结果行.游标移动到下一条记录开头
scroll(self, value, mode='relative'):移动指针到某一行.
如果mode='relative',则表示从当前所在行移动value条,value可以是负数,表示向前移动,正数表示向后移动
如果mode='absolute',则表示从结果集的第一行移动value条.value=0则表示结果集的开头,
游标属性:
游标对象.description:返回表的结构(包括字段名等),返回结果是一个元组,元组内元素是每个字段信息构成的元组
3.关闭数据库:
关闭数据库前先关闭游标:游标对象.close()
关闭数据库连接:连接对象.close()
1.查询符合条件的记录:
select count(*) from tablename where col = 'col';
这种方法性能上有些浪费,没必要把全部记录查出来。
select 1 from tablename where col = 'col' limit 1;
执行这条sql语句,所影响的行数不是0就是1。
特别解释下limit 1,mysql在找到一条记录后就不会往下继续找了。性能提升很多。
结论:推荐第二种方式。
2.添加用户:
create user:没有任何权限只能登陆。
添加用户的同时赋予权限:grant user
在新添加用户时候,如果没有在用户名后指定本地登陆或者远程登陆,这个用户默认是可以远程登陆的。
drop user 可以同时删除多个允许远程登陆的用户(不用跟@'%')。
查看所有用户
SELECT User, Host, Password FROM mysql.user;
3. mysql的备份与恢复
备份:
备份数据库mariadb下的所有表到文件mariadbdump
mysqldump -uroot -p mariadb >mariadb.dump
备份数据库mariadb下的所有表的结构到文件mariadbdump,不备份其中的数据
mysqldump -uroot -pwestos --no-data mariadb > `date +%Y_%m_%d`_mariadb.dump
备份所有的数据库的所有表到文件mariadbdump
mysqldump -uroot -pwestos --all-databases >mariadb4.dump
恢复:
mysqladmin -uroot -pwestos create mariadb2
mysql -uroot -pwestos mariadb2< mariadb.dump
-----> 在用python的MysqlDB包对Mysql进行insert操作时出现了问题,程序运行不报错,insert语句也没有问题,但是新的数据一直没有插入到数据库中。在查阅了资料之后,发现是未提交的原因。
数据库语言可分为四种,
数据操作语言(Date Manipulation Language)DML语言,实现对数据的基本操作,”增删改”。
UPDATE DELETE INSERT
数据定义语言(Data Definition Language )DDL语言,可以实现对数据库结构、操作方法等的定义:
create table 创建表
alter table 修改表
drop table 删除表
truncate table 删除表中所有行
create index 创建索引
drop index 删除索引**
数据库控制语言(Data Control Language)DCL授权,角色控制
GRANT 授权
REVOKE 取消授权
事务控制语言(Transaction Control Language)事务控制语言
SAVEPOINT 设置保存点
ROLLBACK 回滚
SET TRANSACTION
在这之中,DDL语句是自带commit的,而执行DML命令如果没有提交,将不会被其他会话看到。除非在DML命令之后执行了DDL命令或DCL命令,或用户退出会话,或终止实例,此时系统会自动发出commit命令,使未提交的DML命令提交。
所以在执行了UPDATE,INSERT操作都执行一下提交命令:连接对象.commit()
另外,在连接数据库的时候,有一个默认参数:autocommit,它默认值为False,在连接数据库的时候设置这个参数autocommit=True,就可以不用再调用commit()方法了。
-----> mysql语句中----删除表数据drop、truncate和delete的用法:
程度从强到弱
1、drop table tb
drop将表格直接删除,没有办法找回
2、truncate (table) tb
删除表中的所有数据,不能与where一起使用
3、delete from tb (where)
删除表中的数据(可制定某一行)
区别:truncate和delete的区别
1、事务:truncate是不可以rollback的,但是delete是可以rollback的;
原因:truncate删除整表数据(ddl语句,隐式提交),delete是一行一行的删除,可以rollback
2、效果:truncate删除后将重新水平线和索引(id从零开始) ,delete不会删除索引
3、 truncate 不能触发任何Delete触发器。
4、delete 删除可以返回行数
"""
"""
4.查询所有字段
def list_col(localhost, username, password, database, tabls_name):
db = pymysql.connect(localhost, username, password, database, charset="utf8")
cursor = db.cursor()
cursor.execute("select * from %s" % tabls_name)
col_name_list = [tuple[0] for tuple in cursor.description]
db.close()
return col_name_list
5.列出所有的表
def list_table(localhost, username, password, database):
db = pymysql.connect(localhost, username, password, database, charset="utf8")
cursor = db.cursor()
cursor.execute("show tables")
table_list = [tuple[0] for tuple in cursor.fetchall()]
db.close()
return table_list
例子:
import pymysql as mysql
u = 'root'
p = 'westos'
d = 'python'
# connect函数创建数据库或者打开数据库,返回一个数据库的连接对象,程序员通过连接对象访问数据库
conn = mysql.connect(user=u,passwd=p,db=d,charset='utf8',autocommit=True)
#cursor函数创建一个游标
cur = conn.cursor()
#execute函数执行sql语句
try:
cur.execute('create table employee(id int,name varchar(20),age int,sex enum("男","女"),salary int,department varchar(40));')
cur.execute('insert into employee values(1,"张三",18,"男",5000,"IT部门"),(3,"李四",20,"男",6000,"市场部"),(2,"小红",28,"女",10000,"人事部");')
cur.execute('delete from employee where name="张三";')
cur.execute('update employee set sex="女" where name ="李四";')
except:
print("error......11111......")
else:
print('success....11111......')
li = [(i,'user'+str(i),123456) for i in range(1,21)]
try:
cur.executemany('insert into users values(%s,%s,%s);',li)
cur.execute('select * from users;')
except:
print("error......222......")
else:
print('success....222......')
#用tmp来接收从数据库查询到的所有记录。
tmp = cur.fetchall()
cur.close()
conn.close()
for i in tmp:
print(i)
python生成数据库指令_Python学习—数据库操作相关推荐
- python 魔兽世界升级脚本_Python 实现数据库更新脚本的生成方法
我在工作的时候,在测试环境下使用的数据库跟生产环境的数据库不一致,当我们的测试环境下的数据库完成测试准备更新到生产环境上的数据库时候,需要准备更新脚本,真是一不小心没记下来就会忘了改了哪里,哪里添加了 ...
- python与数据库连接语句_python 链接数据库语句
python操作mysql数据库实现增删改查 Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口. Python 数据库接口支持非 ...
- python从入门到_Python学习路线从入门到上手,如何快速Python学习?
因为清晰易读的风格,广泛的适用性,Python已经成为最受欢迎的编程语言之一.在TIOBE 排行榜中位居第四,是名副其实的人工智能第一语言. 风靡的另一个原因是,Python有非常多的第三方库.比如用 ...
- python生成word目录_Python 文件与目录操作方法总结
Python 有很多内置的模块和函数可用于文件的操作处理,这些函数都分布在几个模块上:如 os,os.path,shutil 和pathlib 等等.本文收集了许多您需要知道的函数,以便在 Pytho ...
- wincc历史数据库_什么是数据库?如何学习数据库?
JZGKCHINA工控技术分享平台 工业自动化领域,大家经常接触到上位机软件,比如我们常用的WinCC,IFix,FactoryTalk View,WiSCADA等,都会牵扯到历史数据的存储,用于历史 ...
- MySQL数据库(1)~~一起学习数据库冲冲冲
MySQL数据库~~一起学习数据库冲冲冲 数据库操作 1.显示当前数据库 2.创建数据库 3.使用/选中数据库 4.删除数据库 数据库表操作 1.创建表 2.查看表 3.查看表结构 4.删除表 5.表 ...
- MySQL数据库课程设计_什么是数据库?如何学习数据库?
工业自动化领域,大家经常接触到上位机软件,比如我们常用的WinCC,IFix,FactoryTalk View,WiSCADA等,都会牵扯到历史数据的存储,用于历史趋势,历史报警,报表的显示,很多公司 ...
- python生成日期列表_PYTHON生成日期维度表
数据仓库的定义之一是反应历史变化,数据或多或少都会包含时间特征,因此日期维度就成了数据仓库中不可或缺的维度之一,可以说在任何一个事实表中都会有一个或者多个日期维度的外键.日期维度可以尽可能多的包含日期 ...
- python生成规定随机数_python生成随机数的方法
python生成随机数的方法 发布时间:2020-08-21 14:50:04 来源:亿速云 阅读:110 作者:小新 这篇文章主要介绍了python生成随机数的方法,具有一定借鉴价值,需要的朋友可以 ...
最新文章
- 【Git】Git 本地的撤销修改和删除操作
- android RadioGroup设置某一个被选中
- shell对文本进行操作命令
- VTK:彩色海拔地图用法实战
- 中国 人民大学计算机考研分数线,中国人民大学2010年计算机考研复试分数线
- 三言两语话敏捷(2) - 持续集成
- JAVA操作文件大全(二)
- Win7虚拟Wifi热点(设置后能连接wifi但无法上网的可按后面提示操作)
- 华成英-模拟电子技术P11 场效应管及其放大电路 笔记
- 《数字图像处理 第三版》(冈萨雷斯)——第五章 图像复原与重建
- 网络代理之后无法抓包的解决方案
- [AHOI2007]密码箱
- 小米路由器AC2100开启IPV6的方法
- 斯蒂文斯理工学院计算机专业,斯蒂文斯理工学院计算机专业
- 深圳多九云优认知能力团体反馈训练系统----认知训练与生物反馈训练合二为一
- 办公大师系列经典丛书 诚聘译者
- oracle 18c 转 11g,安装Oracle:Oracle 18c、Oracle 11g
- python itemgetter函数_[问题解决] sorted函数以及operator.itemgetter函数
- iOS weak和assign修饰OC对象的区别
- 驾押人员安全教育培训系统隐私政策
热门文章
- 每日一皮:给老板演示刚做好的功能...
- 什么是NIO?NIO的原理是什么机制?
- Nacos 原理:推+拉打造客户端配置信息的实时更新
- 福利一波,赠票:2018杭州云栖大会 - 单日票(9月22日)
- android 九宫格虚线,形状Drawable和九宫格
- centos7二进制安装php,Centos7下编译安装配置Nginx+PHP+MySql环境
- linux下内存测试mbw,【转帖】MBW内存测试
- 单目3D人脸重建DECA
- arcface mxnet转onnx
- requests.exceptions.TooManyRedirects: Exceeded 30 redirects