python操作mysql进行更新
- 格式:doc
- 大小:93.00 KB
- 文档页数:4
在 Python 中,可以使用 MySQL 官方提供的mysql-connector-python库进行 MySQL 数据库的连接、断开和重连。
以下是一个简单的示例,演示如何在 Python 中实现MySQL 数据库的断开重连:
首先,确保已经安装了mysql-connector-python库:
然后,可以使用以下代码实现断开和重连:
在这个例子中,create_connection函数用于创建 MySQL 连接,close_connection函数
用于断开连接。
可以根据需要调用这两个函数,例如在开始和结束某个操作时调用。
请注意,数据库连接是一种资源,需要在使用完毕后进行适当的断开。
在某些情况下,数据库连接可能由于连接空闲时间过长而被服务器断开,这时可以通过重新连接来恢复连接。
在Python中,使用MySQL时,我们经常需要将字符串与其他信息组合成SQL语句。
这种时候,就需要用到拼接字符串的方法。
然而,需要注意的是,直接拼接字符串可能会导致SQL 注入风险,因此我们需要采取一些安全措施。
**一、基本字符串拼接**在Python中,我们通常使用`+`操作符来拼接字符串。
例如:```pythonsql = "SELECT * FROM users WHERE name = '" + name + "' AND age = " + str(age) + ";"```这种方法简单易懂,但在处理用户输入时存在SQL注入风险。
**二、使用参数化查询**为了防止SQL注入,我们通常使用参数化查询。
在MySQL中,可以使用`?`作为占位符,然后将其替换为实际的参数值。
这种方法更为安全,因为它不会将参数值直接嵌入到SQL语句中。
```pythonsql = "SELECT * FROM users WHERE name = %s AND age = %s" params = (name, age)cursor.execute(sql, params)```请注意,确保只使用可信任的数据作为参数值,以防止SQL注入攻击。
**三、动态SQL生成**有时候,我们可能需要构建更复杂的SQL语句,这时候可以使用动态SQL。
这种方法可以让我们根据不同的条件生成不同的SQL语句。
```pythonfrom sqlalchemy import textsql_template = text("SELECT * FROM users WHERE name = :name AND age = :age")params = {"name": name, "age": age}sql = sql_pile(dialect=mysql.dialect())cursor.execute(sql, params)```这种方法使用了更安全的查询构建器,可以更好地处理SQL注入问题。
- 1 - python pymysql用法 PythonPyMySQL是一个纯Python实现的MySQL客户端库,用于图形化界面的开发、数据导入、数据处理等。下面将介绍如何使用Python PyMySQL。 1. 安装Python PyMySQL 要使用Python PyMySQL,首先要安装它。可以使用pip命令进行安装: ```python pip install PyMySQL ``` 2. 连接MySQL数据库 连接MySQL数据库需要指定主机名、端口号、用户名、密码和数据库名。以下是连接MySQL数据库的示例代码: ```python import pymysql # 打开数据库连接 db = pymysql.connect(host='localhost', port=3306, user='root', password='password', database='test') # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() # 关闭数据库连接 db.close() - 2 -
``` 3. 创建表 创建表需要使用CREATE TABLE语句。以下是创建表的示例代码: ```python import pymysql # 打开数据库连接 db = pymysql.connect(host='localhost', port=3306, user='root', password='password', database='test') # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() # 使用 execute() 方法执行 SQL,如果表存在则删除 cursor.execute('DROP TABLE IF EXISTS EMPLOYEE') # 使用 execute() 方法执行 SQL,创建新表 sql = '''CREATE TABLE EMPLOYEE ( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, SEX CHAR(1), INCOME FLOAT )''' cursor.execute(sql) # 关闭数据库连接 db.close() - 3 -
Python使用pymysql模块的executemany方法批量插入数据提高MysqPython中使用pymysql模块的executemany(方法可以实现批量插入数据,从而提高MySQL数据库的插入性能。
在本文中,我将详细介绍如何使用executemany(方法进行批量插入数据,以及如何优化性能。
一、pymysql模块简介pymysql是Python操作MySQL数据库的一个优秀的模块,它可以方便地对MySQL数据库进行连接、查询、插入等操作。
在使用pymysql模块之前,我们需要先安装它。
可以使用以下命令进行安装:pip install pymysql二、executemany(方法的使用executemany(方法是pymysql模块的一个重要方法,它可以一次性执行多个SQL语句。
当我们需要插入大量数据到MySQL数据库时,使用executemany(方法可以显著提高插入性能。
executemany(方法的语法如下:cursor.executemany(sql, params)其中,sql参数是要执行的SQL语句,params参数是一个多个记录组成的列表。
每个记录是一个由字段值组成的元组或列表。
executemany(方法会根据sql参数的占位符自动将params参数中的值进行替换。
下面是一个使用executemany(方法批量插入数据的示例代码:import pymysql#连接数据库#创建游标对象cursor = conn.cursor#定义SQL语句sql = "INSERT INTO users (name, age) VALUES (%s, %s)"#定义数据data = [('Alice', 20), ('Bob', 25), ('Cathy', 30), ('David', 35)]#执行批量插入cursor.executemany(sql, data)#提交事务#关闭游标和连接cursor.closeconn.close三、性能优化使用executemany(方法进行批量插入可以提高MySQL数据库的插入性能,但是在插入大量数据时,仍然可能遇到性能问题。
Python中的数据库连接与操作常见问题解析Python是一种功能强大的编程语言,它可以用于处理各种数据处理任务,包括连接和操作数据库。
在Python中,我们可以使用各种库来与数据库进行交互,如MySQL、SQLite和PostgreSQL。
然而,与数据库连接和操作相关的问题在编写和维护Python应用程序时经常出现。
本文将解析Python中数据库连接和操作的一些常见问题,并提供相应的解决方案。
一、数据库连接问题1. 连接失败在使用Python与数据库进行交互时,连接数据库可能会失败。
这可能是由于数据库配置错误、网络连接问题或权限不足等原因导致的。
为了解决连接失败的问题,可以采取以下措施:- 检查数据库配置是否正确,并确保用户名和密码正确。
- 检查网络连接是否正常,并确保数据库服务器可访问。
- 检查数据库的权限设置,并确保当前用户有足够的权限访问数据库。
2. 连接超时连接数据库时,如果连接超时,则需要进行相应的调整。
一种解决方法是增加连接超时时间。
可以通过修改连接字符串中的相关参数来增加连接超时时间,具体取决于使用的数据库库。
二、数据库操作问题1. SQL注入攻击SQL注入是一种常见的安全漏洞,攻击者利用此漏洞通过恶意构造的SQL语句来执行未经授权的操作。
为了防止SQL注入攻击,请使用参数化查询(Prepared Statements)或者ORM(对象关系映射)框架进行数据库操作。
这样可以确保输入的参数被正确地转义和处理。
2. 数据库事务处理在进行批量插入或更新大量数据时,数据库事务处理变得非常重要。
使用数据库事务可以保证一系列的操作要么全部成功,要么全部失败。
可以通过使用WITH语句实现自动提交和回滚事务。
三、数据库连接池问题1. 连接池耗尽当应用程序同时打开大量数据库连接时,可能会导致数据库连接池耗尽的问题。
为了解决这个问题,可以采取以下措施:- 调整连接池的大小以适应应用程序的负载。
可以通过修改数据库连接池的配置参数来增加连接池的大小。
update_many用法详解在数据库操作中,`update_many` 是一种常用的方法,通常用于更新多个文档(记录)的信息。
具体的使用方法会根据你使用的数据库系统而有所不同。
我将以MongoDB 为例进行详细解释,因为`update_many` 主要在MongoDB 中使用。
在MongoDB 中,`update_many` 是`pymongo` 驱动程序的一个方法,用于更新集合中符合条件的多个文档。
以下是`update_many` 的一般用法:```pythonfrom pymongo import MongoClient# 连接到MongoDBclient = MongoClient('mongodb://localhost:27017/')# 选择数据库和集合db = client['your_database_name']collection = db['your_collection_name']# 定义更新条件filter_criteria = {'your_field': 'your_condition'}# 定义更新操作update_operation = {'$set': {'field_to_update': 'new_value'}}# 使用update_many 更新多个文档result = collection.update_many(filter_criteria, update_operation)# 打印更新的文档数量print(f"Matched {result.matched_count} documents and modified {result.modified_count} documents.")```上述代码中,你需要替换`'your_database_name'`、`'your_collection_name'`、`'your_field'` 和`'field_to_update'` 为实际的数据库名称、集合名称、更新条件字段和待更新字段。
升级至python2.7、mysql-python Linux下安装MySQL笔记本:python相关创建于:2011/11/16 10:57更新于:2011/11/16 10:59 URL:/minglog/archive/2011/4/20.htmlcentos5.x升级至python2.7、mysql-pythoncentos5.3的python版本真让人泪奔,什么时代了还2.4的。
自己动手丰衣足食。
1.从官网下载2.7版本# wget /ftp/python/2.7.1/Python-2.7.1.tar.bz22.安装# tar -jxvf Python-2.7.1.tar.bz2# cd Python-2.7.1# ./configure (如不指定 --prefix,默认安装在/usr/local/lib/python2.7)# make && make install3.升级默认版本# mv python /usr/bin/python24# ln -s /usr/local/bin/python2.7 /usr/bin/python4.安装m ysql-python(安装方法不了解可以参看包内的README)# python setup.py buildTraceback (most recent call last):File "setup.py", line 5, in <module>from setuptools import setup, ExtensionImportError: No module named setuptools什么情况?貌似setuptools没有5.去官网下载setuptools官网下载地址# bash setuptools-0.6c11-py2.7.eggTraceback (most recent call last):File "<string>", line 1, in <module>zipimport.ZipImportError: can't decompress data; zlib not available又是什么情况?缺少zlib?(关于安装python所需的软件环境可参看README)这一步我花了很长时间解决它,过程实在是很让人不爽。
Python中使用SQLAlchemy库连接和操作MySQL数据库Python是一种简单易学的编程语言,广泛应用于各种领域,包括数据科学、网络开发、自动化任务等。
而MySQL则是一种常用的关系型数据库管理系统,被广泛应用于大型企业和小型项目。
在Python中,我们可以使用SQLAlchemy库来连接和操作MySQL数据库,使得开发更加便捷高效。
SQLAlchemy是Python中最受欢迎的ORM(对象关系映射)库之一,它提供了一个高级的、功能丰富的数据库访问接口。
通过SQLAlchemy,我们可以使用Python代码操作数据库,而不需要编写原生的SQL语句。
这大大提高了开发效率,并使得代码更易于维护。
首先,我们需要安装SQLAlchemy库。
可以使用pip命令来安装:```pip install SQLAlchemy```安装完成后,我们可以开始连接和操作MySQL数据库。
连接MySQL数据库在使用SQLAlchemy连接MySQL数据库之前,我们需要先准备好数据库的连接信息,包括数据库的地址、端口、用户名、密码等。
假设我们要连接的数据库地址是localhost,端口是3306,用户名是root,密码是123456。
我们可以通过如下代码来创建一个数据库引擎对象:```pythonfrom sqlalchemy import create_engineengine = create_engine('mysql://root:123456@localhost:3306/mydatabase')```上述代码中,我们使用了create_engine函数来创建了一个数据库引擎对象。
这里的'mysql://root:123456@localhost:3306/mydatabase'是连接字符串,它包含了数据库的连接信息。
操作MySQL数据库一旦我们成功连接到MySQL数据库,就可以使用SQLAlchemy提供的各种功能来操作数据库了。
python mysql cursor executemany原理1.在使用Python进行数据库操作时,我们通常会使用MySQL作为后端数据库,并使用MySQL Connector提供的cursor对象执行SQL语句。
executemany是cursor对象的一个常用方法,用于批量执行相同的SQL 语句,特别适用于插入多条记录的情况。
本文将深入探讨executemany 方法的原理及其在Python中的应用。
2. executemany方法概述executemany方法是MySQL Connector提供的cursor对象中的一个方法,其主要功能是执行一条SQL语句多次,即批量执行相同的SQL 命令。
这在处理大量数据插入、更新等操作时非常高效,因为它减少了与数据库的交互次数。
3. executemany方法的语法executemany方法的基本语法如下:cursor.executemany(operation, seq_of_params)•operation:要执行的SQL语句,可以包含占位符,如%s。
•seq_of_params:包含多个参数元组的序列,每个元组对应一次SQL执行。
4. executemany方法的原理4.1 SQL语句批量执行executemany的核心原理在于批量执行SQL语句。
当我们使用executemany时,实际上是将一条SQL语句多次执行,而不是每次都将完整的SQL语句发送给数据库。
4.2 参数绑定executemany方法还允许我们在SQL语句中使用占位符,并通过参数元组将具体的值传递给占位符。
这样,SQL语句就可以在每次执行时使用不同的参数值,实现对多组数据的操作。
4.3 减少与数据库的交互通过批量执行相同的SQL语句,executemany减少了与数据库的交互次数。
相比于循环使用execute方法逐条执行SQL语句,executemany 显著提高了执行效率,特别是在处理大量数据时。
pymysql sql 参数pymysql是一个用于Python的第三方库,它提供了与MySQL数据库进行交互的功能。
在使用pymysql时,我们经常需要使用SQL参数来执行数据库操作,以保证代码的安全性和可靠性。
SQL参数通常用于在执行SQL语句时动态地传递数值或字符串,以防止SQL注入攻击并提高代码的可读性和可维护性。
在pymysql中,我们可以使用问号(?)作为占位符来表示参数,也可以使用命名参数的方式来传递参数。
下面我将从多个角度来介绍如何在pymysql中使用SQL参数:1. 使用问号作为占位符:在执行SQL语句时,可以使用问号来表示参数的位置,然后在执行SQL语句时,传递参数的值。
例如:python.cursor.execute("SELECT FROM table WHERE column1 = ? AND column2 = ?", (value1, value2))。
这样可以确保传递的参数值会被正确地转义,从而避免SQL注入攻击。
2. 使用命名参数:除了问号占位符外,还可以使用命名参数的方式来传递参数。
例如:python.cursor.execute("SELECT FROM table WHERE column1= %(value1)s AND column2 = %(value2)s", {'value1': value1, 'value2': value2})。
这种方式可以在SQL语句中使用参数的具体名称,使得代码更加清晰易懂。
3. 参数化查询:在pymysql中,还可以使用参数化查询来执行带有参数的SQL语句,例如:python.sql = "INSERT INTO table (column1, column2) VALUES (%s, %s)"cursor.execute(sql, (value1, value2))。
一、实验背景随着信息技术的飞速发展,数据更新在各个领域都扮演着至关重要的角色。
数据更新实验旨在验证数据更新策略的有效性,以提高数据的实时性和准确性。
本实验通过对一组模拟数据进行更新操作,分析不同更新策略对数据质量的影响,为实际应用提供参考。
二、实验目的1. 验证不同数据更新策略的有效性;2. 分析数据更新对数据质量的影响;3. 为实际应用提供数据更新策略的建议。
三、实验方法1. 数据准备:随机生成一组模拟数据,包括数值型、文本型和日期型数据,共1000条记录;2. 数据更新策略:设计以下三种数据更新策略进行实验:(1)增量更新:仅更新有变化的数据记录;(2)全量更新:更新所有数据记录;(3)混合更新:结合增量更新和全量更新,根据数据变化程度选择合适的更新方式;3. 实验指标:数据更新时间、数据更新成功率、数据准确性、数据完整性;4. 实验环境:使用Python编程语言和MySQL数据库进行实验。
四、实验结果与分析1. 数据更新时间表1展示了三种数据更新策略的更新时间对比。
表1:数据更新时间对比| 更新策略 | 更新时间(秒) || ---------- | -------------- || 增量更新 | 2.5 || 全量更新 | 3.5 || 混合更新 | 3.0 |从表1可以看出,增量更新策略的更新时间最短,全量更新策略的更新时间最长。
混合更新策略的更新时间介于两者之间,但略优于全量更新。
2. 数据更新成功率表2展示了三种数据更新策略的更新成功率对比。
表2:数据更新成功率对比| 更新策略 | 更新成功率(%) || ---------- | -------------- || 增量更新 | 95.0 || 全量更新 | 100.0 || 混合更新 | 98.0 |从表2可以看出,全量更新策略的更新成功率最高,增量更新策略的更新成功率最低。
混合更新策略的更新成功率介于两者之间。
3. 数据准确性表3展示了三种数据更新策略的数据准确性对比。
Python中的MySQL Connector接口库MySQL Connector是Python与MySQL之间进行交互的接口库,是一个开源的、纯Python编写的接口库。
MySQL Connector的主要功能是连接MySQL数据库,使Python程序能够操作MySQL数据库并将数据从数据库中检索出来。
MySQL Connector与其他Python库相比,主要的优点在于它的速度和可靠性。
本文将对MySQL Connector的功能、使用方法和优点进行介绍。
一、MySQL Connector的安装在使用MySQL Connector之前,需要先在Python环境中安装MySQL Connector库,可以通过以下命令进行安装:```pip install mysql-connector-python```安装完成后,使用以下命令将MySQL Connector库引入Python程序中:```Pythonimport mysql.connector```二、MySQL Connector的基本用法连接MySQL数据库是MySQL Connector库的主要功能之一。
在Python环境中连接MySQL数据库的代码如下:```Pythonimport mysql.connectormydb = mysql.connector.connect(host="127.0.0.1",user="yourusername",passwd="yourpassword")print(mydb)```这段代码会创建一个mydb对象,该对象代表与MySQL服务器的连接。
在实际使用中,需要将“yourusername”和“yourpassword”替换为MySQL服务器中的用户名和密码。
创建好连接之后,可以利用MySQL Connector库向数据库中插入、检索、更新和删除数据。
Python中的CRUD操作CRUD操作是计算机程序中最为基本的操作之一,它通过对数据库中的数据进行增加(Create)、读取(Read)、更新(Update)和删除(Delete)等常见操作,能够使得程序更加灵活、高效地处理数据,因此也是每个程序员在日常编程中不可避免的一部分。
但是,在实际的开发过程中,不同的编程语言、不同的数据库系统以及不同的应用场景下,CRUD操作又会有不同的实现方式。
本文将着重探讨Python语言中的CRUD操作,对于初学者,本文旨在提高对Python编程语言的理解和应用,对于有经验的开发者,本文也将提供一些高级的技术和实践。
一、Python中的数据库在Python中,我们可以使用多种不同的数据库系统,其中包括最常见的SQL Server、MySQL、Oracle和SQLite等。
对于不同的数据库系统,Python中的实现方式也会有所不同。
但值得注意的是,在Python中最常用的方式是通过Python自带的sqlite3库实现的SQLite数据库。
SQLite是一种轻量级的数据库系统,它的主要特点是体积小、便于移植和支持完整的SQL语言。
与其他主流的数据库系统不同,SQLite并没有单独的服务进程,因为它的数据存储在单个的本地文件中。
这种体系结构对于小型的Web应用程序和桌面应用程序非常有效,并且由于客户端不需要与服务器通信,所以也能够很好地保护用户的隐私数据。
二、Python中的CRUD操作简介1.创建(Create)在Python中,我们可以通过sqlite3模块中的一个connect方法来打开一个数据库连接。
使用这个connect方法,我们可以指定数据库的路径(文件名)和需要使用的时间格式等其他一些配置项。
同时,我们也可以通过这个方法直接创建一个数据库(如果它还不存在)。
create_connection()函数是连接到SQLite数据库的一个示例。
在Python中,我们可以使用很多不同版本的sqlite3库,但它们的API接口是类似的,所以这段代码适用于所有的sqlite3库版本。
pymysql的用法简介pymysql是一个用于Python编程语言的第三方模块,它提供了一个简单易用的接口来连接和操作MySQL数据库。
pymysql是Python 3版本的PyMySQL模块,用于在Python中连接和操作MySQL数据库。
pymysql的特点包括:•与Python标准库兼容:pymysql完全兼容Python标准库中的DB-API规范,可以无缝地替代Python标准库中的sqlite3模块。
•高性能:pymysql使用纯Python实现,无需额外的依赖,因此具有较高的性能。
•安全性:pymysql使用参数化查询和预编译语句,可以有效地防止SQL注入攻击。
•支持事务:pymysql支持数据库事务,可以确保一系列的操作要么全部执行成功,要么全部失败回滚。
安装pymysql使用pip命令可以方便地安装pymysql模块:pip install pymysql连接MySQL数据库在使用pymysql之前,需要先建立与MySQL数据库的连接。
连接MySQL数据库的步骤如下:1.导入pymysql模块:import pymysql2.建立与MySQL数据库的连接:connection = pymysql.connect(host='localhost',user='root',password='password',database='test',charset='utf8mb4',cursorclass=pymysql.cursors.DictCursor)•host:MySQL服务器的主机名或IP地址。
•user:连接MySQL服务器的用户名。
•password:连接MySQL服务器的密码。
•database:要连接的数据库名称。
•charset:字符集。
•cursorclass:游标类。
3.关闭与MySQL数据库的连接:connection.close()执行SQL查询连接MySQL数据库之后,可以执行SQL查询操作。
pythonmysql日期输出格式_PythonMySQL日期时间格式化作为参数的操作下面是一些常用的日期和时间格式化代码:1.将日期格式化为年-月-日的字符串:```pythonprint(formatted_date)```输出结果如下:```2024-01-01```2.将时间格式化为时:分的字符串:```python```输出结果如下:```12:00```3.将日期和时间格式化为年-月-日时:分的字符串:```python```输出结果如下:```2024-01-0112:00```当将日期和时间格式化为字符串后,可以将其作为参数传递给MySQL 查询。
下面是一个示例,演示如何使用格式化后的日期作为查询参数:```pythonimport mysql.connector#连接到MySQL数据库cnx = mysql.connector.connect(user='username',password='password',host='localhost', database='mydatabase')#创建游标对象cursor = cnx.cursor#格式化日期为字符串#查询语句query = "SELECT * FROM table WHERE date_column = %s"#执行查询cursor.execute(query, (formatted_date,))#获取查询结果results = cursor.fetchall#处理查询结果for result in results:print(result)#关闭游标和数据库连接cursor.closecnx.close```在上述示例中,我们首先将当前日期格式化为字符串,然后将其作为参数传递给MySQL的查询语句中,执行查询并处理查询结果。
需要注意的是,MySQL的日期字段存储着日期和时间信息,因此在执行查询时,需要确保格式化后的日期字符串与MySQL字段的数据类型匹配。
python中mysql中拼接字符串中的sql用法-回复标题:Python中MySQL中拼接字符串中的SQL用法详解导语:在Python的开发中,与MySQL数据库进行交互是比较常见的操作之一。
而拼接字符串是Python中的常用技术,用于构建SQL查询语句。
本文将详细介绍Python中在MySQL中拼接字符串中的SQL用法,并通过一步一步的示例帮助读者理解和运用。
第一部分:什么是拼接字符串?在MySQL中,拼接字符串是将不同的字符串值连接成一个单一的字符串值的过程。
拼接字符串的语法是使用连接操作符(+ 或CONCAT)将多个字符串连接在一起。
第二部分:在Python中使用SQL拼接字符串的方式1. 使用"+"运算符进行字符串拼接:在Python中,我们可以使用“+”运算符将字符串连接在一起。
为了构建SQL查询语句,我们可以将要拼接的字符串和字符串值用“+”运算符连接起来。
示例:pythonname = "John"age = 25query = "SELECT * FROM users WHERE name = '" + name + "' AND age = " + str(age)在上述示例中,我们将变量name和age与固定的SQL查询部分进行拼接,构建出完整的SQL查询语句。
2. 使用f-string进行字符串插值:Python 3.6及以上版本引入了f-string,它可以在字符串中直接插入变量值,非常方便用于构建SQL查询语句。
示例:pythonname = "John"age = 25query = f"SELECT * FROM users WHERE name = '{name}' AND age= {age}"在上述示例中,我们使用了f-string来直接在SQL查询语句中插入变量name和age的值。
python操作mysql进行更新的时候,必须有commit
今天在写python操作mysql的时候,出现了一个奇怪的现象,在用python代码执行update的
时候,代码返回已经更新成功,但是数据库表里的字段的值却没有改变,一直没有找到错误的原因,
结果寻求身边同事的帮助,问题解决,在此做个记录;
MysqlHelper.py 代码如下
#! /usr/bin/python
# -*- coding: utf-8 -*-
HOST = '127.0.0.1'
PORT = 3306
USER = 'test'
PASSWORD = 'test123'
DBNAME = 'test'
CHARSET = 'utf8'
def connect():
try:
import MySQLdb
except ImportError, e:
#print e
return None
try:
cxn = MySQLdb.connect(host=HOST, user=USER,
passwd=PASSWORD,port=PORT,db=DBNAME,charset=CHARSET)
#print cxn
return cxn
except MySQLdb.Error,e:
print "Mysql Error %d: %s" % (e.args[0],
e.args[1])
# 插入操作
def insert_one(cur,sql,value):
res = cur.execute(sql ,value)
# 插入成功,res 返回值为1
if 1 != res :
print 'failed'
else:
print 'success'
def insert_many(cur,sql,values):
res = cur.executemany(sql ,values)
# 插入成功,res 返回值为1
if 1 != res :
print 'failed'
else:
print 'success'
getRC = lambda cur: cur.rowcount
if hasattr(cur,'rowcount') else -1
# 更新操作
def update(cur,sql,params):
cur.execute(sql , params)
return getRC(cur)
# 删除操作
def delete(cur,sql,params):
cur.execute(sql,params)
return getRC(cur)
# 只获取一条记录,返回的是一个元组
def fetch_one(cur,sql):
count = cur.execute(sql)
#print count
result = cur.fetchone();
return result
# 获取多条数据;返回的是二维元组;
def fetch_all(cur,sql):
count = cur.execute(sql)
#print count
results = cur.fetchall();
'''
print results
for r in results:
print r
'''
return results
# 提交的完成操作
def finish(cxn):
cxn.commit()
cxn.close()
我在其它的文件中调用
a.py
import MysqlHelper# 获取数据库各个表的主键def getTablePrimaryKey(tablename):
cxn = MysqlHelper.connect()
cur = cxn.cursor()
res = MysqlHelper.update(cur,"UPDATE table_primary_index "+
"SET index_primary_value=index_primary_value+1"+
" WHERE index_table_name =%s" , (tablename))
print res
result = MysqlHelper.fetch_one(cur,"SELECT * FROM table_primary_index WHERE
index_table_name='%s'" % tablename)
print result
现象: print res 可以正确返回1,说明更新数据库成功;
print result 也可以取到刚刚更新的值;
但是数据库表中的值没有变更;
原因:
python 操作mysql 是用 事物的方式来实现的,所以在update 的时候 必须有commit 提
交的过程,否则数据表不会生效;
修改后的代码如下:
b.py
# 获取数据库各个表的主键def getTablePrimaryKey(tablename):
cxn = MysqlHelper.connect()
cur = cxn.cursor()
res = MysqlHelper.update(cur,"UPDATE table_primary_index "+
"SET index_primary_value=index_primary_value+1"+
" WHERE index_table_name =%s" , (tablename))
print res
result = MysqlHelper.fetch_one(cur,"SELECT * FROM table_primary_index WHERE
index_table_name='%s'" % tablename)
print result
MysqlHelper.finish(cxn)
return result[1]