python数据库(sql与python区别是什么有什么联系)
大家好,今天小编来为大家解答以下的问题,关于python数据库,sql与python区别是什么有什么联系这个很多人还不知道,现在让我们一起来看看吧!
如何使用python对数据库(mysql)进行操作
一、数据库基本操作
1.想允许在数据库写中文,可在创建数据库时用下面命令
create database zcl charset utf8;2.查看students表结构
desc students;3.查看创建students表结构的语句
show create table students;4.删除数据库
drop database zcl;5.创建一个新的字段
alter table students add column nal char(64);PS:本人是很讨厌上面这种“简单解释+代码”的博客。其实我当时在mysql终端写了很多的实例,不过因为当时电脑运行一个看视频的软件,导致我无法Ctrl+C/V。现在懒了哈哈~~
二、python连接数据库python3不再支持mysqldb。其替代模块是PyMySQL。本文的例子是在python3.4环境。
1.安装pymysql模块
pip3 install pymysql2.连接数据库,插入数据实例
import pymysql
#生成实例,连接数据库zcl
conn= pymysql.connect(host='127.0.0.1', user='root', passwd='root', db='zcl')
#生成游标,当前实例所处状态
cur= conn.cursor()
#插入数据
reCount= cur.execute('insert into students(name, sex, age, tel, nal) values(%s,%s,%s,%s,%s)',('Jack','man',25,1351234,"CN"))
reCount= cur.execute('insert into students(name, sex, age, tel, nal) values(%s,%s,%s,%s,%s)',('Mary','female',18,1341234,"USA"))
conn.commit()#实例提交命令
cur.close()
conn.close()
print(reCount)查看结果:
mysql> select* from students;+----+------+-----+-----+-------------+------+
| id| name| sex| age| tel| nal|
+----+------+-----+-----+-------------+------+
| 1| zcl| man| 22| 15622341234| NULL|
| 2| alex| man| 30| 15622341235| NULL|
+----+------+-----+-----+-------------+------+
2 rows in set3.获取数据
import pymysql
conn= pymysql.connect(host='127.0.0.1', user='root', passwd='root', db='zcl')
cur= conn.cursor()
reCount= cur.execute('select* from students')
res= cur.fetchone()#获取一条数据
res2= cur.fetchmany(3)#获取3条数据
res3= cur.fetchall()#获取所有(元组格式)
print(res)
print(res2)
print(res3)
conn.commit()
cur.close()
conn.close()输出:
(1,'zcl','man', 22,'15622341234', None)
((2,'alex','man', 30,'15622341235', None),(5,'Jack','man', 25,'1351234','CN'),(6,'Mary','female', 18,'1341234','USA'))
()三、事务回滚事务回滚是在数据写到数据库前执行的,因此事务回滚conn.rollback()要在实例提交命令conn.commit()之前。只要数据未提交就可以回滚,但回滚后ID却是自增的。请看下面的例子:
插入3条数据(注意事务回滚):
import pymysql
#连接数据库zcl
conn=pymysql.connect(host='127.0.0.1', user='root', passwd='root', db='zcl')
#生成游标,当前实例所处状态
cur=conn.cursor()
#插入数据
reCount=cur.execute('insert into students(name, sex, age, tel, nal) values(%s,%s,%s,%s,%s)',('Jack','man', 25, 1351234,"CN"))
reCount=cur.execute('insert into students(name, sex, age, tel, nal) values(%s,%s,%s,%s,%s)',('Jack2','man', 25, 1351234,"CN"))
reCount=cur.execute('insert into students(name, sex, age, tel, nal) values(%s,%s,%s,%s,%s)',('Mary','female', 18, 1341234,"USA"))
conn.rollback()#事务回滚
conn.commit()#实例提交命令
cur.close()
conn.close()
print(reCount)未执行命令前与执行命令后(包含回滚操作)(注意ID号):未执行上面代码与执行上面代码的结果是一样的!!因为事务已经回滚,故students表不会增加数据!
mysql> select* from students;+----+------+--------+-----+-------------+------+
| id| name| sex| age| tel| nal|
+----+------+--------+-----+-------------+------+
| 1| zcl| man| 22| 15622341234| NULL|
| 2| alex| man| 30| 15622341235| NULL|
| 5| Jack| man| 25| 1351234| CN|
| 6| Mary| female| 18| 1341234| USA|
+----+------+--------+-----+-------------+------+
4 rows in set执行命令后(不包含回滚操作):只需将上面第11行代码注释。
mysql> select* from students;+----+-------+--------+-----+-------------+------+
| id| name| sex| age| tel| nal|
+----+-------+--------+-----+-------------+------+
| 1| zcl| man| 22| 15622341234| NULL|
| 2| alex| man| 30| 15622341235| NULL|
| 5| Jack| man| 25| 1351234| CN|
| 6| Mary| female| 18| 1341234| USA|
| 10| Jack| man| 25| 1351234| CN|
| 11| Jack2| man| 25| 1351234| CN|
| 12| Mary| female| 18| 1341234| USA|
+----+-------+--------+-----+-------------+------+
7 rows in set总结:虽然事务回滚了,但ID还是自增了,不会因回滚而取消,但这不影响数据的一致性(底层的原理我不清楚~)
四、批量插入数据import pymysql
#连接数据库zcl
conn= pymysql.connect(host='127.0.0.1', user='root', passwd='root', db='zcl')
#生成游标,当前实例所处状态
cur= conn.cursor()
li= [
("cjy","man",18,1562234,"USA"),
("cjy2","man",18,1562235,"USA"),
("cjy3","man",18,1562235,"USA"),
("cjy4","man",18,1562235,"USA"),
("cjy5","man",18,1562235,"USA"),
]
#插入数据
reCount= cur.executemany('insert into students(name,sex,age,tel,nal) values(%s,%s,%s,%s,%s)', li)
#conn.rollback()#事务回滚
conn.commit()#实例提交命令
cur.close()
conn.close()
print(reCount)pycharm下输出: 5
mysql终端显示:
mysql> select* from students;#插入数据前+----+-------+--------+-----+-------------+------+
| id| name| sex| age| tel| nal|
+----+-------+--------+-----+-------------+------+
| 1| zcl| man| 22| 15622341234| NULL|
| 2| alex| man| 30| 15622341235| NULL|
| 5| Jack| man| 25| 1351234| CN|
| 6| Mary| female| 18| 1341234| USA|
| 10| Jack| man| 25| 1351234| CN|
| 11| Jack2| man| 25| 1351234| CN|
| 12| Mary| female| 18| 1341234| USA|
+----+-------+--------+-----+-------------+------+
7 rows in set
mysql> mysql> select* from students;#插入数据后+----+-------+--------+-----+-------------+------+
| id| name| sex| age| tel| nal|
+----+-------+--------+-----+-------------+------+
| 1| zcl| man| 22| 15622341234| NULL|
| 2| alex| man| 30| 15622341235| NULL|
| 5| Jack| man| 25| 1351234| CN|
| 6| Mary| female| 18| 1341234| USA|
| 10| Jack| man| 25| 1351234| CN|
| 11| Jack2| man| 25| 1351234| CN|
| 12| Mary| female| 18| 1341234| USA|
| 13| cjy| man| 18| 1562234| USA|
| 14| cjy2| man| 18| 1562235| USA|
| 15| cjy3| man| 18| 1562235| USA|
| 16| cjy4| man| 18| 1562235| USA|
| 17| cjy5| man| 18| 1562235| USA|
+----+-------+--------+-----+-------------+------+
12 rows in set学完的东西要及时总结,有些东西忘记了阿~_~
sql与python区别是什么有什么联系
一、性质不同
1、sql:是一种特殊目的的编程语言,是一种数据库查询和程序设计语言。
2、python:Python由荷兰数学和计算机科学研究学会的Guido van Rossum于1990年代初设计,作为一门叫做ABC语言的替代品。
二、作用不同
1、sql:用于存取数据以及查询、更新和管理关系数据库系统。
2、python:Python提供了高效的高级数据结构,还能简单有效地面向对象编程。
三、特点不同
1、sql:不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统,可以使用相同的结构化查询语言作为数据输入与管理的接口。
2、python:Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。
参考资料来源:
百度百科-Python(计算机编程语言)
百度百科-结构化查询语言(SQL)
python库有哪些
Python比较常见的库有:Arrow、Behold、Click、Numba、Matlibplot、Pillow等:
1、Arrow
Python中处理时间的库有datetime,但是它过于简单,使用起来不够方便和智能,而Arrow可以说非常的方便和智能。它可以轻松地定位几个小时之前的时间,可以轻松转换时区时间,对于一个小时前,2个小时之内这样人性化的信息也能够准确解读。
2、Behold
调试程序是每个程序员必备的技能,对于脚本语言,很多人习惯于使用print进行调试,然而对于大项目来说,print的功能还远远不足,我们希望有一个可以轻松使用,调试方便,对变量监视完整,格式已于查看的工具,而Behold就是那个非常好用的调试库。
3、Click
现在几乎所有的框架都有自己的命令行脚手架,Python也不例外,那么如何快速开发出属于自己的命令行程序呢?答案就是使用Python的Click库。Click库对命令行api进行了大量封装,你可以轻松开发出属于自己的CLI命令集。终端的颜色,环境变量信息,通过Click都可以轻松进行获取和改变。
4、Numba
如果你从事数学方面的分析和计算,那么Numba一定是你必不可少的库。Numpy通过将高速C库包装在Python接口中来工作,而Cython使用可选的类型将Python编译为C以提高性能。但是Numba无疑是最方便的,因为它允许使用装饰器选择性地加速Python函数。
5、Matlibplot
做过数据分析,数据可视化的数学学生一定知道matlab这个软件,这是一个收费的数学商用软件,在Python中,Matlibplot就是为了实现这个软件中功能开发的第三方Python库。并且它完全是免费的,很多学校都是用它来进行数学教学和研究的。
6、Pillow
图像处理是任何时候我们都需要关注的问题,平时我们看到很多ps中的神技,比如调整画面颜色,饱和度,调整图像尺寸,裁剪图像等等,这些其实都可以通过Python简单完成,而其中我们需要使用的库就是Pillow。
7、pyqt5
Python是可以开发图形界面程序的。而pyqt就是一款非常好用的第三方GUI库,有了它,你可以轻松开发出跨平台的图形应用程序,其中qtdesigner设计器,更是加速了我们开发图形界面的速度。
除了上述介绍的之外,Python还有很多库,比如:Pandas、NumPy、SciPy、Seaborn、Keras等。
好了,文章到此结束,希望可以帮助到大家。