Code前端首页关于Code前端联系我们

包含mysql和python链接的帖子

terry 2年前 (2023-09-30) 阅读数 38 #Mysql
文章标签 Mysql

本文内容列表:

  • 1.如何连接python和mysql?
  • 2.如何连接python和mysql
  • 3.如何将MySQL数据库与Python结合?
  • 4.如何连接mysql和python

如何连接python和mysql?

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

在[1]中:从mysql导入连接器

在[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协议:在整个连接过程中,这些数据包按照以下顺序在MySQL服务器和驱动程序之间发送。

MySQL服务器向客户端发送握手包,握手包中记录了MySQL服务器的版本、默认的认证插件、密码的salt值(authent-data)。

2。 MySQL客户端发出ssl连接请求数据包(如果需要)。

3。 MySQL客户端发送带有握手包的响应包。该包记录了用户名、加密密码字符串、客户端属性和其他信息。

4。 MySQL服务器发送响应包。该包检测登录是否成功。如果没有,将给出错误消息。

如何连接python到mysql

? # 连接数据库

connection = pymysql.connect(host='127.0.0.1',

                                                          但是                    user='root',

                                                                           class=pymysql.cursors.DictCursor)

如何结合MySQL数据库和Python?

我们首先需要的是 MySQLdb 库。使用import来测试是否存在。看起来它确实存在。

使用

#!/usr/bin/python

# -*-编码:UTF-8 -*-

支持中文。

使用import MySQLdb导入库

使用connect连接数据库。 db=MySQLdb.connect('127.0.0.1','root','root','myself')

然后使用db.curspor()方法获取。

最后只需执行sql语句即可执行查询命令。

如何连接mysql和python

什么是 PyMySQL?

PyMySQL是Python3.x版本中用于连接MySQL服务器的库,Python2中使用mysqldb。

PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含纯 Python MySQL 客户端库。

PyMySQL安装

在使用PyMySQL之前,我们需要确保PyMySQL已安装。

PyMySQL下载地址:。

如果还没有安装,我们可以使用以下命令安装最新版本的PyMySQL:

$ pip3 install PyMySQL

如果您的系统不支持pip命令,可以使用以下方法安装:

1.使用git命令下载并安装安装包(也可以手动下载):

$ git clone cd PyMySQL /$ python3 setup.py install

2.如果需要指定版本号,可以使用curl命令来安装:

$ # X.X是PyMySQL的版本号 $curl -L | tar xz$ cd PyMySQL*$ python3 setup.py install

$ # 现在您可以删除 PyMySQL* 文件夹

注意:请确保您具有安装上述模块的 root 权限。

安装过程中可能会出现“ImportError: No module named setuptools”的错误信息,这意味着您还没有安装setuptools。您可以访问查找每个系统的安装方法。

Linux系统安装示例:

$ wget python3 ez_setup.py

数据库连接

在连接数据库之前,请确认以下内容:

您已在TESTDB中创建了数据库。 TESTDB 您已在数据库中创建了表 EMPLOYEE

EMPLOYEE。 EMPLOYEES 表中的字段为 FIRST_NAME、LAST_NAME、AGE、SEX 和 INCOME。

用于连接TESTDB数据库的用户名是“testuser”,密码是“test123”。您可以自行设置或直接使用root用户名和密码。对于Mysql数据库用户授权,使用Grant命令。

Python MySQLdb 模块已安装在您的计算机上。

如果您不熟悉sql语句,请访问我们的基础SQL教程

示例:

以下示例链接到Mysql TESTDB数据库:

示例(Python 3.0♝+)!/usr/ bin/python3

import pymysql

# 打开数据库连接 db = pymysql.connect("localhost","testuser","test123","TESTDB" )

# 使用cursor()方法创建游标对象cursorcursor = db.cursor()

#使用execute()方法执行SQL查询cursor.execute("SELECT VERSION()")

#使用fetchone()获取单条数据的方法 data =cursor.fetchone()

print ("数据库版本: %s " % data)

# 关闭数据库连接 db.close()

处的输出结果执行上述脚本如下:

数据库版本:5.5.20-log

创建数据库表

如果数据库连接存在,我们可以使用execute()方法为数据库创建表,创建表 EMPLOYEES 如下:

示例 (Python 3.0+)

#!/usr/bin/python3

import pymysql

# 打开数据库连接 db = pymysql.host. ,"testuser","test123","TESTDB" )

# 使用Cursor()方法创建游标对象cursorcursor = db.cursor()

#使用execute()方法执行SQL并删除表 , if它存在cursor.execute("DROP TABLE IF FOUND EMPLOYEE")

# 使用预处理语句create table sql = "" "create table employee (

firstname char (20) not null,

lastname char(20) ) ,

年龄 int,

性别 (1),

,

INCOME FLOAT )""

cursor.execute(sql) 数据库连接 db.close()

数据库插入操作

以下示例使用SQL INSERT语句向EMPLOYEES表中插入记录:

示例(Python 3.0+)

#! /python3

import pymysql

# 打开数据库连接 db = pymysql.connect("localhost","testuser","test123","TESTDB" )

# 使用cursor()方法获取操作游标cursor = db .cursor ( )

# SQL 插入语句 sql = """INSERT INTO EMPLOYEE(FIRST_NAME,

LASTNAME, AGE, GENDER, INCOME)

VALUES ('Mac', 'Mohan', 20, 'M ', 2000 ) """try: # 执行sql语句

cursor.execute(sql)

# 发送到数据库执行

db.commit() except: # 如果出现错误,则回滚

db.rollback( )

# 关闭数据库连接 db.close()

上面的例子也可以写成下面的形式:

示例(Python 3.0+)

#!/usr/ bin/ python3

import pymysql

#打开数据库连接 db = pymysql.connect("localhost","testuser","test123","TESTDB" )

#使用cursor()方法获取操作游标cursor = db.cursor()

# SQL插入语句sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \

LAST NAME, AGE, GENDER, INCOME) \

VALUES ('%s', '%s', %s, '%s', %s)" % \ ('Mac', 'Mohan', 20, 'M', 2000)try: # 执行sql语句

cursor.execute(sql )

# 执行sql语句

db.commit () except: # 发生错误时回滚

db.rollback()

# 关闭数据库连接 db.close()

以下代码使用变量向SQL语句发送参数:

............................user_id = "test123"password = "password"con.execute('插入登录值( % s , %s)' % \           (用户id,密码))........................................ ...

数据库查询操作

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

fetchone():该方法获取下一个查询结果集。结果集是一个对象

fetchall():接收所有返回的结果行。

rowcount:这是一个只读属性,返回执行execute()方法后受影响的行数。 ? # 打开数据库连接 db = pymysql.connect("localhost", "testuser", "test123", "TESTDB" )

# 使用cursor()方法获取操作游标cursor = db.cursor()

# SQL 查询语句 sql = "SELECT * FROM EMPLOYEES \

WHERE INCOME %s" % (1000)try: # 执行 SQL 语句

cursor.execute(sql)

# 获取所有邮件列表

结果 = curve.fetchall()

结果中的行: fname = row[0]

lname = row[1]

年龄 = row[2]

性别 = row[3 ]

收入 = row[4]

# 打印结果

print ("fname=%s,lname=%s,age=%s,sex=%s,收入=%s" % \ (fname,lname,age,gender,profit)) except: print("错误:可以不检索数据")

# 关闭数据库连接 db.close()

以上脚本执行结果如下:

fname=Mac, lname=Mohan,age=20,gender=M,收入=2000

数据库更新操作

更新操作用于更新数据表中的数据。以下示例将 TESTDB 表中 SEX 为“M”的 AGE 字段增加 1:

示例 (Python 3.0+)

#!/ usr/bin/python3

import pymysql

# Open数据库连接 db = pymysql.connect("localhost","testuser","test123","TESTDB" )

# 使用cursor()方法获取操作 Cursor = db.cursor()

# SQL更新语句 sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE GENDER = '%c'" % ('M')try: # 执行SQL语句

cursor .execute(sql)

# 发送到数据库用于执行

db.commit() except: # 发生错误时回滚

db.rollback()

# 关闭数据库连接 db.close()

删除操作

删除操作是用于删除数据表中的数据。以下示例显示删除 EMPLOYEES 数据表中 AGE 大于 20 的所有数据:

示例 (Python 3.0+)

#!/usr /bin/python3

import pymysql # 数据库连接 db = pymysql.connect("localhost","testuser","test123","TESTDB" )

# 使用cursor()方法检索操作游标cursor = db.cursor()

# SQL 删除语句 sql = "DELETE FROM EMPLOYEE WHERE AGE %s" % (20)try: # 执行 SQL 语句

cursor.execute(sql)

# 提交更改

db.commit() except : # 发生错误时回滚

db.rollback()

# 关闭连接 db.close()

提交事务

事务机制可以保证数据的一致性。

交易必须具备4个属性:原子性、一致性、隔离性和持久性。这四个属性通常称为 ACID 属性。

原子性。事务是一个不可分割的工作单元。事务中包含的所有操作要么已执行,要么未执行。

一致性。事务必须将数据库从一种一致性状态更改为另一种一致性状态。一致性和原子性密切相关。

绝缘。一个事务的执行不能被其他事务干扰。即一个事务内使用的操作和数据与其他并发事务隔离,并发执行的事务之间不能互相干扰。

耐用。连续性也称为持久性,是指事务一旦提交,其对数据库中数据的更改必须是永久性的。后续操作或错误不应对其产生影响。

Python DB API 2.0 事务提供两种提交或回滚方法。

示例

示例(Python 3.0+)

# SQL 删除记录语句 sql = "DELETE FROM EMPLOYEE WHERE AGE %s" % (20)try: # 执行 SQL 语句 q. )

# 提交

到数据库 db.commit() except: # 发生错误时回滚

db.rollback()

对于支持事务的数据库,在Python数据库编程中,当游标创建完成 此时会自动启动一个不可见的数据库事务。

方法 commit() 执行游标上的所有更新操作,rollback() 方法回滚当前游标上的所有操作。每个方法都会启动一个新事务。

错误处理

DB API 定义了数据库操作的一些错误和异常。下表列出了这些错误和异常:

异常

描述

警告 当存在严重警告时引发,例如插入的数据被截断等。必须是 StandardError 的子类。

错误 除警告之外的所有其他错误类型。必须是 StandardError 的子类。

InterfaceError 当数据库接口模块本身发生错误(不是数据库中的错误)时引发。必须是 Error 的子类。

DatabaseError 当发生与数据库相关的错误时触发。必须是 Error 的子类。

DataError 数据处理过程中发生错误时引发,例如:除零错误、数据超出范围等。必须是DatabaseError 的子类。

OperationalError是指非用户控制的、而是在数据库操作过程中发生的错误。例如:连接意外断开、未找到数据库名、事务处理失败、内存分配错误等都是操作数据库时出现的错误。必须是 DatabaseError 的子类。

IntegrityError 完整性相关的错误,例如外键检查错误等。必须是DatabaseError子类。

InternalError 数据库内部错误,如游标错误、事务同步错误等。必须是DatabaseError子类。

ProgrammingError 编程错误,如数据表(表)不存在或已存在、SQL语句语法错误、参数个数错误等。必须是DatabaseError的子类。

NotSupportedError 不支持错误是指使用了数据库不支持的函数或API。例如,在连接对象上使用.rollback()函数,但数据库不支持事务,或者事务已关闭。必须是 DatabaseError 的子类。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门