包含mysql和python链接的帖子
本文内容列表:
- 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前端网发表,如需转载,请注明页面地址。
code前端网
