当前位置:首页 » 编程语言 » python调用数据库

python调用数据库

发布时间: 2022-07-09 14:14:05

1. python如何访问数据库

1.背景:

python提供了很多数据库接口, 常用的数据库有 MS sql Server /mysql /oracle 等。

打开链接 https://wiki.python.org/moin/DatabaseInterfaces

是python 关于数据库接口的一个总结 , 可以看到python支持的访问的数据库系统。

2.模块:

python 主要是通过模块和数据库连接的。

2.1 安装模块:

如果使用anconda,本身就会集合很多模块,不需要手动安装。如果用pycharm就要手动安装模块。

安装模块流程:

下载模块扩展包放到路径下——>cmd找到相应路径——> pip install +扩展包名字

下面列举一些常用连接数据库的模块:pymssql / sqlite3/ PyMySQL/pyodbc/odbc/adodbapi

不同模块连接的数据库不同, 支持的版本系统有的也不一样。但是大体用法都是相近的, 因为有DB-API

相关推荐:《Python教程》

3.Python DB-API

3.1背景:

在没有DB-API 之前, 不同数据库有不同的数据库接口程序, 这就导致python 访问 database 的接口程序非常混乱。如果我们学习了python 访问 mysql 的接口程序, 然后要切换到另一个数据库上, 我们还要在学习另外一个数据库的接口程序。python DB-API就是为了解决接口程序混乱而生成的。有了DB-API, 在不同数据库上移植代码就变得简单的多了。

3.2Python DB-API:

Python 定义了一套操作数据库的 DB-API 接口,它是一个规范,定义了一系列必须的对象和数据库存取方式,以便为不同的底层数据库系统提供一致的访问接口

这个链接就是python 官方给定的 DB-API 的说明 https://www.python.org/dev/peps/pep-0249/

3.3 Python DB--API的内容:

连接对象:

?Connect()创建连接:host/server /user/password/db connect方法生成一个connect对象, 我们通过这个对象来访问数据库。符合标准的模块都会实现connect方法。

?close():关闭连接

?commit():提交当前事务。做出某些更改后确保已经进行了提交,这样才可以将这些修改真正地保存到database中

?rollback() 回滚上一次调用 commit()以来对数据库所做的更改

?cursor():创建游标。系统为用户开通的一个数据缓冲区,用于存放SQL语句执行结果。cursor游标是有状态的,它可以记录当前已经取到结果的第几个记录了,因此,一般你只可以遍历结果集一次。在上面的情况下,如果执行fetchone()会返回为空。这一点在测试时需要注意

游标对象:

?Execute()执行一个数据库查询或命令。 execute 执行sql 语句之后运行的结果不会直接output 出来 , 而是放到了一个缓存区, 要用 fetch语句+print 可以查询sql运行的结果

?fetchone ()得到结果集的下一行

?fetchmany(size)得到结果集的下几行

?fetchall()返回结果集中剩下的所有行

?rowcount 返回影响的行数

?Close()关闭游标对象

3.4Python DB--API的工作原理及流程:

如图所示如果把python 和数据库比作两个不同的地点, connection 就是路, 能连接python和database。cursor就像在路上行驶的小货车, 可以用于执行sql 语句, 以及存储sql 运行的结果。

流程:

4.MS SQL Server 示例:

4.1 导入模块、创建连接:

4.2 创建游标: 游标创建之后就可以对数据库进行查询更改了!

4.3对数据进行操作(创建表、插入行、更新数据、增加列、删除行、列、表):

4.4 查询 获取行:

5.其他:

使用游标的时候要注意, 每次连接只能有一个游标查询处于活跃状态。 code演示:

execute()循环和 executemany() 插入100000 条数据测速:

2. 怎么用python连接mysql数据库

在 Python 语言环境下我们这样连接数据库。

In [1]: from mysql import connector

In [2]: cnx = connector.connect(host="172.16.192.100",port=3306,user="appuser",password="xxxxxx")

但是连接数据库的背后发生了什么呢?


答案

当我们通过驱动程序(mysql-connector-python,pymysql)连接 MySQL 服务端的时候,就是把连接参数传递给驱动程序,驱动程序再根据参数会发起到 MySQL 服务端的 TCP 连接。当 TCP 连接建立之后驱动程序与服务端之间会按特定的格式和次序交换数据包,数据包的格式和发送次序由MySQL 协议规定。MySQL 协议:https://dev.mysql.com/doc/internals/en/client-server-protocol.html整个连接的过程中 MySQL 服务端与驱动程序之间,按如下的次序发送了这些包。

  • MySQL 服务端向客户端发送一个握手包,包里记录了 MySQL-Server 的版本,默认的授权插件,密码盐值(auth-data)。

  • 2. MySQL 客户端发出 ssl 连接请求包(如果有必要的话)。

    3. MySQL 客户端发出握手包的响应包,这个包时记录了用户名,密码加密后的串,客户端属性,等等其它信息。

    4. MySQL 服务端发出响应包,这个包里记录了登录是否成功,如果没有成功也会给出错误信息。

3. 调用之前的准备工作,包括学习python语言的基础知识、调用python调用数据库的条件以及如何调用

挑用这些的准备工作包括学习的自制剧时,我们首先把机子制秩序好了才能走啊,做好跳舞用的准备工作,我们一定要认真学习,把学习当做自己的功课,学好了知识才能做奇葩的各个方面。

4. 如何使用python连接mysql数据库

在 Python 语言环境下我们这样连接数据库。

In [1]: from mysql import connector

In [2]: cnx = connector.connect(host="172.16.192.100",port=3306,user="appuser",password="xxxxxx")

但是连接数据库的背后发生了什么呢?


答案

当我们通过驱动程序(mysql-connector-python,pymysql)连接 MySQL 服务端的时候,就是把连接参数传递给驱动程序,驱动程序再根据参数会发起到 MySQL 服务端的 TCP 连接。当 TCP 连接建立之后驱动程序与服务端之间会按特定的格式和次序交换数据包,数据包的格式和发送次序由MySQL 协议规定。MySQL 协议:https://dev.mysql.com/doc/internals/en/client-server-protocol.html整个连接的过程中 MySQL 服务端与驱动程序之间,按如下的次序发送了这些包。

  • MySQL 服务端向客户端发送一个握手包,包里记录了 MySQL-Server 的版本,默认的授权插件,密码盐值(auth-data)。

  • 2. MySQL 客户端发出 ssl 连接请求包(如果有必要的话)。

    3. MySQL 客户端发出握手包的响应包,这个包时记录了用户名,密码加密后的串,客户端属性,等等其它信息。

    4. MySQL 服务端发出响应包,这个包里记录了登录是否成功,如果没有成功也会给出错误信息。

5. 如何使用python对数据库进行操作

你可以访问Python数据库接口及API查看详细的支持数据库列表。不同的数据库你需要下载不同的DB API模块,例如你需要访问Oracle数据库和Mysql数据,你需要下载Oracle和MySQL数据库模块。
DB-API 是一个规范. 它定义了一系列必须的对象和数据库存取方式, 以便为各种各样的底层数据库系统和多种多样的数据库接口程序提供一致的访问接口 。
Python的DB-API,为大多数的数据库实现了接口,使用它连接各数据库后,就可以用相同的方式操作各数据库。
Python DB-API使用流程:

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

什么是MySQLdb?

MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的。

如何安装MySQLdb?

为了用DB-API编写MySQL脚本,必须确保已经安装了MySQL。复制以下代码,并执行:
#!/usr/bin/python
# -*- coding: UTF-8 -*-

import MySQLdb

如果执行后的输出结果如下所示,意味着你没有安装 MySQLdb 模块:
Traceback (most recent call last):
File "test.py", line 3, in <mole>
import MySQLdb
ImportError: No mole named MySQLdb

6. python使用数据库

增加一条数据

importpymysql

#返回Connection对象
#host="localhost"
con=pymysql.connect(host="192.168.31.28",
port=3306,user="atguigu",
password="atguigu",
db="atguigudb",
charset="utf8")
#返回cursor对象
cursor=con.cursor()
#SQL语言-SQL语句
sql="insertintostudents(name)value('李四')"
#插入数据
cursor.execute(sql)
#提交数据,没有提交就没有数据
con.commit()
#关闭释放资源
cursor.close()
#关闭资源
con.close()

修改数据

importpymysql
#修改任意一条数据

#返回Connection对象
conn=pymysql.connect(
host="192.168.31.28",
db="atguigudb",
port=3306,
user="atguigu",
password="atguigu",
charset="utf8"
)
cursor=conn.cursor()
sql="updatestudentssetname='郭靖'whereid=1"
count=cursor.execute(sql)
print("count=",count)
#提交正常数据物理上修改了
conn.commit()
cursor.close()
conn.close()

删除数据

importpymysql
#修改任意一条数据

#返回Connection对象
conn=pymysql.connect(
host="192.168.31.28",
db="atguigudb",
port=3306,
user="atguigu",
password="atguigu",
charset="utf8"
)
cursor=conn.cursor()
sql="deletefromstudentswhereid=20"
count=cursor.execute(sql)
print("count=",count)
conn.commit()
cursor.close()
conn.close()

查询一条数据

importpymysql
try:
conn=pymysql.connect(
host='192.168.31.28',
port=3306,
db='atguigudb',
user='atguigu',
passwd='atguigu',
charset='utf8'
)
cursor=conn.cursor()
cursor.execute('select*fromstudentswhereid=3')
#返回满足这个条件的这个数据,如果有多条返回第一条,并且封装元组中
result=cursor.fetchone()
print(result)
foriinresult:
print(i)
cursor.close()
conn.close()
exceptExceptionase:
print(e.message)

查询多条数据

importpymysql
try:
conn=pymysql.connect(
host='192.168.31.28',
port=3306,
db='atguigudb',
user='atguigu',
passwd='atguigu',
charset='utf8'
)
cursor=conn.cursor()
cursor.execute('select*fromstudents')
#返回元组,如果多条数据,元组里面嵌套元组
result=cursor.fetchall()
print(result)
foriinresult:
print(i)
conn.commit()
cursor.close()
conn.close()
exceptExceptionase:
print(e.message)

读取mysql数据,填写数据到excel

frompyexcel_xlsimportsave_data
frompyexcel_xlsimportget_data

importmysql.connector

#和数据库建立连接
cnx=mysql.connector.connect(user='root',password='',
host='127.0.0.1',
database='test')
#查询语句
sql="selectmy_name,my_valuefromtbl_members"
#执行查询
cursor.execute(sql)
#获得查询结果
result=cursor.fetchall()

cursor.close()
cnx.close()

#打开预定义表头文件
xls_header=get_data("d:/xh.xls")

#获得表头数据
xh=xls_header.pop("Sheet1")

#拼接整表数据
xd=OrderedDict()
xd.update({"Sheet1":xh+result})

#保存到另一个文件中
save_data("d:/xd.xls",xd)

7. 如何用python3连接mysql数据库

python3使用PyMysql连接mysql数据库
python语言的3 x完全不向前兼容,导致我们在python2 x中可以正常使用的库,到了python3就用不了了 比如说mysqldb目前MySQLdb并不支持python3
python语言的3.x完全不向前兼容,导致我们在python2.x中可以正常使用的库,到了python3就用不了了.比如说mysqldb
目前MySQLdb并不支持python3.x , Python3.x连接MySQL的方案有:oursql, PyMySQL, myconnpy 等
下面来说下python3如何安装和使用pymysql,另外两个方案我会在以后再讲。
1.pymysql安装
pymysql就是作为python3环境下mysqldb的替代物,进入命令行,使用pip安装pymysql

1

pip install pymysql3

2.pymysql使用
如果想使用mysqldb的方式,那么直接在py文件的开头加入如下两行代码即可。

1
2
3
4

#引入pymysql
import pymysql
#当成是mysqldb一样使用,当然也可以不写这句,那就按照pymysql的方式
pymysql.install_as_MySQLdb()

8. python怎么调用数据库

安装MySQL驱动

由于MySQL服务器以独立的进程运行,并通过网络对外服务,所以,需要支持Python的MySQL驱动来连接到MySQL服务器。
MySQL官方提供了mysql-connector-python驱动,但是安装的时候需要给pip命令加上参数--allow-external:
pip install mysql-connector-python --allow-external mysql-connector-python

如果上面的命令安装失败,可以试试另一个驱动:
pip install mysql-connector

除了使用mysql.connector还可以使用pymysql

9. 如何用python连接 tableau 数据库,然后读取数据

链接:http://pan..com/s/1BWBtFMYeQazJWUYSmHi5fw

提取码:yz10

Python&Tableau:商业数据分析与可视化。Tableau的程序很容易上手,各公司可以用它将大量数据拖放到数字“画布”上,转眼间就能创建好各种图表。这一软件的理念是,界面上的数据越容易操控,公司对自己在所在业务领域里的所作所为到底是正确还是错误,就能了解得越透彻。

快速分析:在数分钟内完成数据连接和可视化。Tableau 比现有的其他解决方案快 10 到 100 倍。大数据,任何数据:无论是电子表格、数据库还是 Hadoop 和云服务,任何数据都可以轻松探索。

课程目录:

前置课程-Python在咨询、金融、四大等领域的应用以及效率提升

Python基础知识

Python入门:基于Anaconda与基于Excel的Python安装和界面

简单的数学计算

Python数据分析-时间序列2-数据操作与绘图

Python数据分析-时间序列3-时间序列分解

......

10. 在python中怎么引入数据库

数据库版本:MySQL
Python版本:3.5
之前用想用MySQLdb来着,后来发现py3.5版本不支持,现选择pymysql

现在想将数据库adidas中的表jd_comment读取至python中的DataFrame,方便数据分析处理
import pymysql
import pandas as pd
import numpy as np

try:
conn = pymysql.connect(host='localhost', user='root', passwd='123456', db='adidas', charset='UTF8')
cur = conn.cursor()
cur.execute('select * from jd_comment')
rows = cur.fetchall() #获取元组列表
cur.close()
conn.close()
except pymysql.Error as e:
print('Mysql Error %d: %s' %(e.args[0], e.args[1]))

cols = list(zip(*cur.description)) #可以看到列名(由元组构成)

#将数据库中的数据保存为DataFrame(数据必须是字典或者数组,列表也必须是list或者数组)
adidas = pd.DataFrame(np.array(rows), columns=list(cols[0]))

热点内容
一加保存的密码在哪里 发布:2025-03-12 01:13:06 浏览:88
微信第三方平台源码 发布:2025-03-12 01:12:21 浏览:780
服务器关闭怎么补偿 发布:2025-03-12 01:01:26 浏览:333
c语言复数的四则运算 发布:2025-03-12 01:01:22 浏览:802
我的世界电脑版新的服务器 发布:2025-03-12 01:00:27 浏览:378
网站数据库设置 发布:2025-03-12 00:52:13 浏览:310
安卓是哪个企业 发布:2025-03-12 00:41:23 浏览:91
javascript还是php 发布:2025-03-12 00:41:12 浏览:697
微博抽奖算法 发布:2025-03-12 00:41:10 浏览:112
抖音的麦克风在哪里打开安卓版 发布:2025-03-12 00:35:15 浏览:122