在Python日常生活中,会遇到哪些类型的数据源或数据类型

在Python日常生活中,会遇到哪些类型的数据源或数据类型,第1张

本文Python *** 作 MySQL 数据需要是使用到 PyMySQL 驱动

Python *** 作 MySQL 前提是要安装好 MySQL 数据库并能正常连接使用,安装步骤详见下文。

注意: 安装过程我们需要通过开启管理员权限来安装,否则会由于权限不足导致无法安装。

首先需要先下载 MySQL 安装包, 官网下载地址 下载对应版本即可,或直接在网上拉取并安装:

权限设置:

初始化 MySQL:

启动 MySQL:

查看 MySQL 运行状态:

Mysql安装成功后,默认的root用户密码为空,你可以使用以下命令来创建root用户的密码:

登陆:

创建数据库:

查看数据库:

PyMySQL 模块使用 pip命令进行安装:

假如系统不支持 pip 命令,可以使用以下方式安装:

pymysql connect 函数:连接上数据库

输出结果显示如下:表面数据库连接成功

使用 pymysql 的 connect() 方法连接数据库,connect 参数解释如下:

conncursor():获取游标

如果要 *** 作数据库,光连接数据是不够的,咱们必须拿到 *** 作数据库的游标,才能进行后续的 *** 作,游标的主要作用是用来接收数据库 *** 作后的返回结果,比如读取数据、添加数据。通过获取到的数据库连接实例 conn 下的 cursor() 方法来创建游标,实例如下:

输出结果为:

cursor 返回一个游标实例对象,其中包含了很多 *** 作数据的方法,如执行sql语句,sql 执行命令: execute() 和 executemany()

execute(query,args=None):

executemany(query,args=None):

其他游标对象如下表:

完整数据库连接 *** 作实例如下:

以上结果输出为:

创建表代码如下:

如下所示数据库表创建成功:

插入数据实现代码:

插入数据结果:

Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。

查询数据代码如下:

输出结果:

DB API中定义了一些数据库 *** 作的错误及异常,下表列出了这些错误和异常:

本文给大家介绍 Python 如何连接 Mysql 进行数据的增删改查 *** 作,文章通过简洁的代码方式进行示例演示,给使用 Python *** 作 Mysql 的工程师提供支撑。

虽然 Python 需要为 *** 作不同的数据库使用不同的模块,但不同的数据库模块并非没有规律可循,因为它们基本都遵守 Python 制订的 DB API 协议,目前该协议的最新版本是 20,因此这些数据库模块有很多 *** 作其实都是相同的。下面先介绍不同数据库模块之间的通用内容。

全局变量

Python 推荐支持 DB API 20 的数据库模块都应该提供如下 3 个全局变量:

apilevel:该全局变量显示数据库模块的 API 版本号。对于支持 DB API 20 版本的数据库模块来说,该变量值通常就是 20。如果这个变量不存在,则可能该数据库模块暂时不支持 DB API 20。读者应该考虑选择使用支持该数据库的其他数据库模块。

threadsafety:该全局变量指定数据库模块的线程安全等级,该等级值为 0~3 ,其中 3 代表该模块完全是线程安全的;1 表示该模块具有部分线程安全性,线程可以共享该模块,但不能共享连接;0 则表示线程完全不能共享该模块。

paramstyle:该全局变量指定当 SQL 语句需要参数时,可以使用哪种风格的参数。该变量可能返回如下变量值:

format:表示在 SQL 语句中使用 Python 标准的格式化字符串代表参数。例如,在程序中需要参数的地方使用 %s,接下来程序即可为这些参数指定参数值。

pyformat:表示在 SQL 语句中使用扩展的格式代码代表参数。比如使用 %(name),这样即可使用包含 key 为 name 的字典为该参数指定参数值。

qmark:表示在 SQL 语句中使用问号()代表参数。在 SQL 语句中有几个参数,全部用问号代替。

numeric:表示在 SQL 语句中使用数字占位符(:N)代表参数。例如:1 代表一个参数,:2 也表示一个参数,这些数字相当于参数名,因此它们不一定需要连续。

named:表示在 SQL 语句中使用命名占位符(:name)代表参数。例如 :name 代表一个参数,:age 也表示一个参数。

通过查阅这些全局变量,即可大致了解该数据库 API 模块的对外的编程风格,至于该模块内部的实现细节,完全由该模块实现者负责提供,通常不需要开发者关心。

数据库 API 的核心类

遵守 DB API 20 协议的数据库模块通常会提供一个 connect() 函数,该函数用于连接数据库,并返回数据库连接对象。

数据库连接对象通常会具有如下方法和属性:

cursor(factory=Cursor):打开游标。

commit():提交事务。

rollback():回滚事务。

close():关闭数据库连接。

isolation_level:返回或设置数据库连接中事务的隔离级别。

in_transaction:判断当前是否处于事务中。

上面第一个方法可以返回一个游标对象,游标对象是 Python DB API 的核心对象,该对象主要用于执行各种 SQL 语句,包括 DDL、DML、select 查询语句等。使用游标执行不同的 SQL 语句返回不同的数据。

游标对象通常会具有如下方法和属性:

execute(sql[, parameters]):执行 SQL 语句。parameters 参数用于为 SQL 语句中的参数指定值。

executemany(sql, seq_of_parameters):重复执行 SQL 语句。可以通过 seq_of_parameters 序列为 SQL 语句中的参数指定值,该序列有多少个元素,SQL 语句被执行多少次。

executescript(sql_script):这不是 DB API 20 的标准方法。该方法可以直接执行包含多条 SQL 语句的 SQL 脚本。

fetchone():获取查询结果集的下一行。如果没有下一行,则返回 None。

fetchmany(size=cursorarraysize):返回查询结果集的下 N 行组成的列表。如果没有更多的数据行,则返回空列表。

fetchall():返回查询结果集的全部行组成的列表。

close():关闭游标。

rowcount:该只读属性返回受 SQL 语句影响的行数。对于 executemany() 方法,该方法所修改的记录条数也可通过该属性获取。

lastrowid:该只读属性可获取最后修改行的 rowid。

arraysize:用于设置或获取 fetchmany() 默认获取的记录条数,该属性默认为 1。有些数据库模块没有该属性。

description:该只读属性可获取最后一次查询返回的所有列的信息。

connection:该只读属性返回创建游标的数据库连接对象。有些数据库模块没有该属性。

总结来看,Python 的 DB API 20 由一个 connect() 开始,一共涉及数据库连接和游标两个核心 API。它们的分工如下:

数据库连接:用于获取游标、控制事务。

游标:执行各种 SQL 语句。

掌握了上面这些 API 之后,接下来可以大致归纳出 Python DB API 20 的编程步骤。

*** 作数据库的基本流程

使用 Python DB API 20 *** 作数据库的基本流程如下:

调用 connect() 方法打开数据库连接,该方法返回数据库连接对象。

通过数据库连接对象打开游标。

使用游标执行 SQL 语句(包括 DDL、DML、select 查询语句等)。如果执行的是查询语句,则处理查询数据。

关闭游标。

关闭数据库连接。

下图显示了使用 Python DB API 20 *** 作数据库的基本流程。

增加一条数据

import pymysql

 

 #返回Connection对象

 #host="localhost"

 con = pymysqlconnect(host="1921683128",

                  port=3306,user="atguigu",

                  password="atguigu",

                  db="atguigudb",

                  charset="utf8")

 #返回cursor对象

 cursor = concursor()

 #SQL语言-SQL语句

 sql = "insert into students(name) value('李四')"

 #插入数据

 cursorexecute(sql)

 #提交数据,没有提交就没有数据

 concommit()

 #关闭释放资源

 cursorclose()

 #关闭资源

 conclose()

修改数据

import pymysql

 #修改任意一条数据

 

 #返回Connection对象

 conn = pymysqlconnect(

    host="1921683128",

    db="atguigudb",

    port=3306,

    user="atguigu",

    password="atguigu",

    charset="utf8"

 )

 cursor = conncursor()

 sql = "update students set name='郭靖' where id = 1"

 count = cursorexecute(sql)

 print("count=",count)

 #提交正常数据物理上修改了

 conncommit()

 cursorclose()

 connclose()

删除数据

import pymysql

 #修改任意一条数据

 

 #返回Connection对象

 conn = pymysqlconnect(

    host="1921683128",

    db="atguigudb",

    port=3306,

    user="atguigu",

    password="atguigu",

    charset="utf8"

 )

 cursor = conncursor()

 sql = "delete from students where id =20"

 count = cursorexecute(sql)

 print("count=",count)

 conncommit()

 cursorclose()

 connclose()

查询一条数据

import pymysql

 try:

    conn=pymysqlconnect(

       host='1921683128',

       port=3306,

       db='atguigudb',

       user='atguigu',

       passwd='atguigu',

       charset='utf8'

    )

    cursor=conncursor()

    cursorexecute('select  from students where id = 3')

    #返回满足这个条件的这个数据,如果有多条返回第一条,并且封装元组中

    result = cursorfetchone()

    print(result)

    for i in result:

       print(i)

    cursorclose()

    connclose()

 except Exception as e:

    print(emessage)

查询多条数据

import pymysql

 try:

    conn=pymysqlconnect(

       host='1921683128',

       port=3306,

       db='atguigudb',

       user='atguigu',

       passwd='atguigu',

       charset='utf8'

    )

    cursor=conncursor()

    cursorexecute('select  from students')

    #返回元组,如果多条数据,元组里面嵌套元组

    result = cursorfetchall()

    print(result)

    for i in result:

       print(i)

    conncommit()

    cursorclose()

    connclose()

 except Exception as e:

    print(emessage)

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

from pyexcel_xls import save_data

from pyexcel_xls import get_data

from collections import OrderedDict

import mysqlconnector

#和数据库建立连接

cnx =mysqlconnectorconnect(user='root', password='',  

                              host='127001',  

                              database='test')

#查询语句

sql = "select my_name,my_value from tbl_members "

#执行查询

cursorexecute(sql)

#获得查询结果

result = cursorfetchall()

cursorclose()

cnxclose()

#打开预定义表头文件

xls_header= get_data("d:/xhxls")

#获得表头数据

xh = xls_headerpop("Sheet1")

#拼接整表数据

xd = OrderedDict()

xdupdate({"Sheet 1":xh+result})

#保存到另一个文件中

save_data("d:/xdxls",xd)

可能是因为在建立数据库时,并没有创建任何表格。在使用Python *** 作数据库时,需要通过编写代码对数据库进行连接、建立表格、插入数据等 *** 作。其中,建立表格的代码过程需要在连接到数据库和实际插入数据之间完成。如果在代码中缺少建立表格的 *** 作步骤,即使连接到了数据库,也无法进行数据的插入和查询等 *** 作。同时,在使用Python连接数据库时,还需要注意数据库连接字符串、权限验证和数据库引擎的选择等内容,这些也都有可能影响表格的创建。如果在创建表格时出现了错误,还需要检查是否遵循数据库表设计规范,例如主键的设置、数据类型的选择、字段名称的规范等。只有在以上方面都考虑充分且正确的情况下,才能成功创建Python数据库表格。

你可以访问Python数据库接口及API查看详细的支持数据库列表。不同的数据库你需要下载不同的DB API模块,例如你需要访问Oracle数据库和Mysql数据,你需要下载Oracle和MySQL数据库模块。

DB-API 是一个规范 它定义了一系列必须的对象和数据库存取方式, 以便为各种各样的底层数据库系统和多种多样的数据库接口程序提供一致的访问接口 。

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

以上就是关于在Python日常生活中,会遇到哪些类型的数据源或数据类型全部的内容,包括:在Python日常生活中,会遇到哪些类型的数据源或数据类型、后端编程Python3-数据库编程、掌握Python *** 作 MySQL 数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9528781.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存