Python --数据库操作

这篇具有很好参考价值的文章主要介绍了Python --数据库操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1, mysql

1-1, mysql驱动

1-2, 连接mysql

1-3, 执行sql语句

1-4, 数据表操作

1-4-1, 创建数据表

1-4-2, 查询数据表

1-4-3, 修改数据表

1-4-4, 删除数据表

1-5, 修改数据表内容

1-5-1, 插入数据

1-5-2, 查询数据

1-5-3, 获取结果集

1-5-4, 更新数据

1-5-5, 删除数据

1-6, 断开mysql连接


1, mysql

1-1, mysql驱动

python要连接mysql需要安装mysql驱动

通过pip install  mysql-connector-python命令安装mysql驱动

In [22]: pip install mysql-connector-python
Looking in indexes: http://mirrors.aliyun.com/pypi/simple/
Collecting mysql-connector-python
  Downloading http://mirrors.aliyun.com/pypi/packages/d3/b8/6798a0f91e595c0704a94c1e32a00ca930f77cb8f0f96c7e4dad4f9db1fe/mysql_connector_python-8.1.0-cp311-cp311-win_amd64.whl (10.8 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.8/10.8 MB 777.8 kB/s eta 0:00:00
Requirement already satisfied: protobuf<=4.21.12,>=4.21.1 in c:\users\administrator\appdata\local\programs\python\python311\lib\site-packages (from mysql-connector-python) (4.21.12)
Installing collected packages: mysql-connector-python
Successfully installed mysql-connector-python-8.1.0
Note: you may need to restart the kernel to use updated packages.

1-2, 连接mysql

先创建连接对象,才能mysql进行操作,命令如下:

conn = mysql.connector.conect(user=用户名, password=密码, database=数据库名)

# 导入mysql驱动
In [23]: import mysql.connector

# 创建连接
In [24]: conn = mysql.connector.connect(user='xxxx', password='xxxx', database='scott')

1-3, 执行sql语句

要执行sql语句,需要通过"连接"创建游标,在通过游标执行sql语句

cursor = conn.cursor():创建游标

cursor.execute(sql语句):执行单挑sql语句

cursor.executemany(sql语句, 参数列表)

1-4, 数据表操作

1-4-1, 创建数据表

# 创建游标
In [27]: cursor = conn.cursor()

# 通过sql语句创建表
In [47]: cursor.execute('''create table user(
    ...: id bigint not null,
    ...: name varchar(20) not null,
    ...: job varchar(20) not null,
    ...: constraint pk_user_table primary key (id));''')

1-4-2, 查询数据表

# 执行sql语句,查询表
In [59]: cursor.execute('show tables;')

# 获取查询结果
In [60]: cursor.fetchall()
Out[60]:
[('bbb',),
 ('bbb_1',),
 ('dept',),
 ('emp',),
 ('salgrade',),
 ('snapshot_table',),
 ('user',)]

1-4-3, 修改数据表

# 增加一列
In [25]: cursor.execute('alter table user add column address varchar(50) not null;')

# 修改address列名为address_1, 数据类型由varchar(50)修改为varchar(100) 
In [29]: cursor.execute('alter table user change column address address_1 varchar(100) not null')

# 查询修改结果
In [30]: cursor.execute('desc user;')

In [31]: cursor.fetchall()
Out[31]:
[('id', b'bigint(20)', 'NO', 'PRI', None, ''),
 ('name', b'varchar(20)', 'NO', '', None, ''),
 ('job', b'varchar(20)', 'NO', '', None, ''),
 ('address_1', b'varchar(100)', 'NO', '', None, '')]

# 删除address_1列
In [33]: cursor.execute('alter table user drop column address_1')

In [34]: cursor.execute('desc user;')

In [35]: cursor.fetchall()
Out[35]:
[('id', b'bigint(20)', 'NO', 'PRI', None, ''),
 ('name', b'varchar(20)', 'NO', '', None, ''),
 ('job', b'varchar(20)', 'NO', '', None, '')]

1-4-4, 删除数据表

In [39]: cursor.fetchall()
Out[39]:
[('bbb',),
 ('bbb_1',),
 ('dept',),
 ('emp',),
 ('salgrade',),
 ('snapshot_table',),
 ('user',),
 ('user_1',)]

# 删除数据表user_1
In [40]: cursor.execute('drop table user_1;')

In [41]: cursor.execute('show tables;')

In [42]: cursor.fetchall()
Out[42]:
[('bbb',),
 ('bbb_1',),
 ('dept',),
 ('emp',),
 ('salgrade',),
 ('snapshot_table',),
 ('user',)]

1-5, 修改数据表内容

更新数据库数据后,需要提交,数据才能保存到数据库中

1-5-1, 插入数据

# 向数据表user中插入数据
In [69]: cursor.execute('''
    ...: insert into user
    ...: (id, name, job)
    ...: values
    ...: (1, 'aa', 'aa1'),
    ...: (2, 'bb', 'bb1'),
    ...: (3, 'cc', 'cc1')
    ...: ''')

# 获取收影响的行
In [70]: cursor.rowcount
Out[70]: 3

# 更新数据库数据后,需要提交,数据才能保存到数据库中
In [79]: conn.commit()


# 执行单条sql语句
# 注意这里的占位符为%s, sql语句与参数之间用的是逗号
In [160]: cursor.execute('insert into user (id, name, job) values (%s, %s, %s);', (20, 'fdsa', 'fdsaf'))

# 执行多条sql语句, sql语句与参数之间用的是逗号
In [137]: users
Out[137]: [(4, 'ee', 'ee1'), (5, 'ff', 'ff1')]


In [139]: cursor.executemany('''
     ...: insert into user
     ...: (id, name, job)
     ...: values
     ...: (%s, %s, %s);
     ...: ''', users)

1-5-2, 查询数据

执行查询语句后不会立即回显数据,需要通过fetch*()方法来获取结果集

In [71]: cursor.execute('select * from user;')

1-5-3, 获取结果集

获取结果集通过命令:

cursor.fetchone():获取结果集一条记录

cursor.fetchmany(n):根据定义值(n),获取结果集n条记录

cursor.fetchall():获取所有结果集

# 通过cursor.fetchall()获取整个结果集
In [72]: cursor.fetchall()
Out[72]: [(1, 'aa', 'aa1'), (2, 'bb', 'bb1'), (3, 'cc', 'cc1')]


In [148]: cursor.execute('select * from user;')

# 获取结果集中一条记录
In [149]: cursor.fetchone()
Out[149]: (1, 'aa', 'aa1')

# 获取结果集中3条记录, 数字3,表示获取3条,根据定义的数字来获取结果集的条数
In [150]: cursor.fetchmany(3)
Out[150]: [(2, 'bb', 'bb1'), (3, 'cc', 'cc1'), (4, 'ee', 'ee1')]


# 若结果集没有被获取完时,再次执行sql语句,会报错
# 这时需要通过cursor.fetchall()获取完整结果集后,再执行sql语句
In [151]: cursor.execute('select * from user;')
---------------------------------------------------------------------------
InternalError                             Traceback (most recent call last)
Cell In[151], line 1
----> 1 cursor.execute('select * from user;')

File ~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mysql\connector\cursor_cext.py:303, in CMySQLCursor.execute(self, operation, params, multi)
    301 except (ProgrammingError, ReferenceError) as err:
    302     raise ProgrammingError("Cursor is not connected", 2055) from err
--> 303 self._cnx.handle_unread_result()
    305 stmt = ""
    306 self.reset()

File ~\AppData\Local\Programs\Python\Python311\Lib\site-packages\mysql\connector\connection_cext.py:955, in CMySQLConnection.handle_unread_result(self, prepared)
    953     self.consume_results()
    954 elif unread_result:
--> 955     raise InternalError("Unread result found")

InternalError: Unread result found

# 获取完整结果集后,再次执行sql语句成功
In [154]: cursor.fetchall()
Out[154]: [(5, 'ff', 'ff1')]

In [156]: cursor.execute('select * from user;')

1-5-4, 更新数据

# 更新id=1的name字段的值
In [66]: cursor.execute('update user set name="aadfsa" where id=1;')

# 注意:数据表数据修改后,需要进行提交,结果才会映射到数据库中
In [67]: conn.commit()

# 查询并获取修改结果
In [68]: cursor.execute('select name from user where id=1;')

In [69]: cursor.fetchall()
Out[69]: [('aadfsa',)]

1-5-5, 删除数据

# 删除id = 2的记录
In [73]: cursor.execute('delete from user where id = 2;')

# 删除后需要提交才会影响到数据库
In [74]: conn.commit()

In [75]: cursor.execute("select * from user;")

In [76]: cursor.fetchall()
Out[76]: [(1, 'aadfsa', 'aa1'), (3, 'cc', 'cc1'), (4, 'ee', 'ee1'), (5, 'ff', 'ff1')]

# 删除整张表数据
In [77]: cursor.execute('delete from user;')

In [78]: conn.commit()

In [79]: cursor.execute("select * from user;")

In [80]: cursor.fetchall()
Out[80]: []

1-6, 断开mysql连接

操作完mysql后,需要断开连接

cursor.close():断开游标

conn.close():断开连接文章来源地址https://www.toymoban.com/news/detail-677324.html

In [168]: cursor.close()
Out[168]: True

In [169]: conn.close()

到了这里,关于Python --数据库操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python之数据库操作(连接数据库,增删改查操作,易错点理解)

    文章目录 前言 一、Python之数据库操作 二、 pymysql 安装 三、pymysql 包引入  连接数据库 创建游标 执行sql数据 - 增删改查 要获取查询结果数据 关闭游标,关闭数据库连接 总结 记录:Python操作数据库的步骤,不容易理解的地方。 学习地址: python与各大数据库的连接: http:/

    2023年04月16日
    浏览(57)
  • Python操作PostgreSQL数据库

    个人简介 :一个从会计转行数据分析师的三旬老汉 擅长领域 :数据分析、数据仓库、大数据 博客内容 :平时会将自己工作中遇到的问题进行归纳总结,分享给各位小伙伴,意在帮助大家 少加班 、 不掉发 ,让我们相互学习,一起进步。 本文分享使用Python操作PostgreSQL数据

    2024年02月15日
    浏览(46)
  • Python基础之数据库操作

    一、安装第三方库PyMySQL 1、在PyCharm中通过 【File】-【setting】-【Python Interpreter】搜索 PyMySQL进行安装 2、通过PyCharm中的 Terminal 命令行 输入: pip install PyMySQL 注:通过pip安装,可能会提示需要更新pip,这时可执行:pip install --upgrade pip 进行更新pip 二、mysql数据库查询(SELECT) 1、

    2024年01月24日
    浏览(54)
  • python与数据库连接操作

    下载命令: pip install PyMySQL 一般我们会使用镜像下载,这样会比较快,比如清华镜像: pip install pymysql -i https://pypi.tuna.tsinghua.edu.cn/simple 连接数据库之前,我们需要知道自己需要连接数据库的用户名,密码,数据库名等信息 步骤: 连接connect() 创建cursor()对象 使用excute()执行S

    2024年02月08日
    浏览(53)
  • Python 操作 MySQL 数据库

    Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口。 Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库: GadFly mSQL MySQL PostgreSQL Microsoft SQL Server 2000 Informix Interbase Oracle Sybase 你可以访问Python数据库接口及API查看详细的支

    2024年02月14日
    浏览(42)
  • Python——操作MySQL数据库

    😊学习永无止境,记得每天学习新的知识!! 在很多业务场景中,我们或多或少都要对数据库上的数据进行的一系列操作, 包括读取数据、写数据、更新或修改数据、删除数据 等。这些操作可以通过编写SQL语句来实现,也可以通过使用数据库管理系统提供的API接口来实现。

    2024年02月09日
    浏览(43)
  • 零基础学Python|Python高阶-使用Python操作数据库

    ​ 作者主页:编程指南针 作者简介:Java、前端、Python开发多年,做过高程,项目经理,架构师 主要内容:Java项目开发、毕业设计开发、面试技术整理、最新技术分享 收藏点赞不迷路 关注作者有好处 文末获得源码 数据库作为存储系统数据的主要工具,担负着数据持久化存

    2024年02月10日
    浏览(39)
  • 13. python从入门到精通——Python操作数据库

    python database API 规范对于关系数据库的访问,Python社区已经制定出一个标准,称为Python Database API,通过这个接口使python跨不同数据库的操作代码可以更加具有可移植性、让 Python 可以连接(并操作)更多的数据库。 用于管理数据库连接的Connection(连接)对象 用于执行查询的

    2024年02月10日
    浏览(91)
  • Python数据库操作【三】—— SQLServer

    以下摘自百度百科: SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本。Microsoft SQL Server近年来不断更新版本,1996年,Microsoft 推出了SQL Server 6.5版本;1998年,SQL Server 7.0版本

    2024年02月03日
    浏览(45)
  • python基础5——正则、数据库操作

    可以使用python脚本对数据库进行操作,比如获取数据库数据保存到文件中,这个功能可以通过数据库相关模块进行实现。 在python2.x版本中使用的是MySQLdb模块,python3.x版本中使用的是pymysql模块,两者用法几乎相同。 pymysql是第三方模块,需要单独安装,首选通过pip安装PyMySQL。

    2024年02月12日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包