python操作mysql进行更新

python操作mysql进行更新
python操作mysql进行更新

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

if1!=res :

print'failed'

else:

print'success'

def insert_many(cur,sql,values):

res =cur.executemany(sql ,values)

# 插入成功,res 返回值为1

if1!=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):

https://www.360docs.net/doc/c611620445.html,mit()

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]

第10章 Python操作数据库

第10 章Python 操作数据库 Python 数据分析(进阶篇)

主要内容CONTENTS 02结构化查询语言SQL 03操作数据库核心API 04Python操作数据库案例01数据库基础

01数据库基础

Python操作数据库 数据库基础 数据库是数据的仓库,将大量数据按照一定的方式组织并存储起来,方便进行管理和维护,例如快速检索和统计等。数据库的主要特点: ?以一定的方式组织、存储数据; ?能为多个用户共享; ?与程序彼此独立。 ?…… 数据库管理系统是一种操纵和管理数据库的大型软件。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过DBMS访问数据库中的数据,数据库管理员通过DBMS进行数据库的维护工作。主要功能包括:数据定义(创建数据库、表等)、数据操纵(增删查改等)、数据库控制(并发、权限等)、数据库维护(转存、恢复等)等。

Python操作数据库 常见的数据库类型 当前常见的数据库类型有:关系型数据库、键值存储数据库、面向文档数据库、图数据库等。 ?关系型数据库:当前应用最广泛的数据库类型,把复杂的数据结构归结为简单的二元关系(即二维表形式),例如MySQL、SQL Server、Oracle、SQLite等; ?键值存储数据库:使用简单的键值方法来存储数据,其中键作为唯一标记,是一种 非关系数据库,例如Redis; ?面向文档数据库:用于存放并获取文档,主要是XML、JSON等具备自我描述特性、呈现层次结构的文档,例如MongoDB; ?图数据库:一种存储图关系的数据库,应用图理论存储实体之间的关系信息,例如Neo4J。

用Python实现数据库编程

破釜沉舟: 为网站站长.设计师.编程开发者. 提供资源!https://www.360docs.net/doc/c611620445.html, 用Python实现数据库编程 文章类别:Python 发表日期:2004-11-11 来源: CSDN 作者: wfh_178 <用PYTHON进行数据库编程> 老巫 2003.09.10 19 September, 2003 用PYTHON语言进行数据库编程, 至少有六种方法可供采用. 我在实际项目中采用,不但功能强大,而且方便快捷.以下是我在工作和学习中经验总结. 方法一:使用DAO (Data Access Objects) 这个第一种方法可能会比较过时啦.不过还是非常有用的. 假设你已经安装好了PYTHONWIN,现在开始跟我上路吧…… 找到工具栏上ToolsàCOM MakePy utilities,你会看到弹出一个Select Library的对话框, 在列表中选择'Microsoft DAO 3.6 Object Library'(或者是你所有的版本). 现在实现对数据的访问: #实例化数据库引擎 import win32com.client engine = win32com.client.Dispatch("DAO.DBEngine.35") #实例化数据库对象,建立对数据库的连接 db = engine.OpenDatabase(r"c:\temp\mydb.mdb") 现在你有了数据库引擎的连接,也有了数据库对象的实例.现在就可以打开一个recordset了. 假设在数据库中已经有一个表叫做 'customers'. 为了打开这个表,对其中数据进行处理,我们使用下面的语法: rs = db.OpenRecordset("customers") #可以采用SQL语言对数据集进行操纵 rs = db.OpenRecordset("select * from customers where state = 'OH'") 你也可以采用DAO的execute方法. 比如这样: db.Execute("delete * from customers where balancetype = 'overdue' and name = 'bill'") #注意,删除的数据不能复原了J

【IT专家】Python操作MySQL案例

本文由我司收集整编,推荐下载,如有疑问,请与我司联系 Python操作MySQL案例 2016/01/23 0 最近都在学习Python代码,希望学会Python后,能给我带来更高的工作效率,因此每天坚持学习和拷代码,下面是一个Python操作MySQL的一个实例,该实例可以让更多的人更好了解MySQLdb模块的使用。我是Python菜鸟,通过学习别人的实例来让自己学到更多Python知识。 ? ?案例:用Python实现银行转账 ?一、在MySQL创建一张表account表,然后在里面插入两条数据: ?mysql show create table account\G*************************** 1. row *************************** Table: accountCreate Table: CREATE TABLE `account` ( `userid` int(11) DEFAULT NULL COMMENT ‘账号ID’, `money` int(11) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin1 row in set (0.02 sec)mysql 当前数据: ?mysql select * from account;+--------+-------+| userid | money |+--------+-------+| 1 | 200 || 2 | 200 |+--------+-------+2 rows in set (0.00 sec)mysql ?编辑脚本money.py文件,运行些脚本需要安装MySQLdb模块,详细安装和基本的使用可以参考我的博客:cnblogs/xuanzhi201111/p/5144982.html ?#!/usr/bin/env python#coding:utf-8#name:money.pyimport sysimport MySQLdb try: sql = “select * from account where userid = %s and money %s” % (source_userid,money) cursor.execute(sql) print “\033[;32m检查是否有足够的钱: \033[0m” + sql except Exception,e: raise Exception(‘执行sql错误:%s’ % e) else: rs = cursor.fetchall() if len(rs) != 1: raise Exception (“账号%s余额不足” % source_userid) finally: cursor.close()#用于减去转掉的部份金额def reduce_money(self,source_userid,money): cursor = self.conn.cursor() try: sql = “update account set money = money - %s where userid=%s” % (money,source_userid) cursor.execute(sql) print “\033[;32m从源账户%s 里扣掉对应的金额: \033[0m” % (source_userid) + sql except Exception,e: raise

python操作数据库PostgreSQL

python操作数据库PostgreSQL 1.简述 python可以操作多种数据库,诸如SQLite、MySql、PostgreSQL等,这里不对所有的数据库操作方法进行赘述,只针对目前项目中用到的PostgreSQL做一下简单介绍,主要包括python 操作数据库插件的选择、安装、简单使用方法、测试连接数据库成功。 2.数据库操作插件的选择 PostgreSQL至少有三个python接口程序可以实现访问,包括PsyCopg、PyPgSQL、PyGreSQL(PoPy已经整合在PyGreSQL中),三个接口程序各有利弊,需要根据实践选择最适合项目的方式。 推荐使用PsyCopg,对python开发框架的兼容性都很好,本文中我们只讨论这个插件。 3.PsyCopg的下载 官网下载psycopg2-2.5.1.tar.gz:https://www.360docs.net/doc/c611620445.html,/psycopg/ 本文使用windows系统开发,未使用官网版本,选择 psycopg2-2.4.2.win-amd64-py2.7-pg9.0.4-release.exe版,地址: https://www.360docs.net/doc/c611620445.html,/s/Cd8pPaw56Ozys 4.PsyCopg的安装 直接exe,根据提示安装即可. ------------------------------------------------ 博主经营一家发饰淘宝店,都是纯手工制作哦,开业冲钻,只为信誉!需要的亲们可以光顾一下!谢谢大家的支持! 店名: 小鱼尼莫手工饰品店 经营: 发饰、头花、发夹、耳环等(手工制作) 网店: https://www.360docs.net/doc/c611620445.html,/ --------------------------------------------------------------------- 继续正题... 5.PsyCopg的使用 py文件代码: __author__ = 'qiongmiaoer'

python中cursor操作数据库

python中cursor操作数据库 python 操作数据库,要安装一个Python和数据库交互的包MySQL-python-1.2.2.win32-py2.5.exe,然后我们就可以使用MySQLdb这个包进行数据库操作了。 操作步骤如下: 1、建立数据库连接 importMySQLdb conn=MySQLdb.connect(host="localhost",user="root",passw d="sa",db="mytable") cursor=conn.cursor() 2、执行数据库操作 n=cursor.execute(sql,param) 我们要使用连接对象获得一个cursor对象,接下来,我们会使用cursor提供的方法来进行工作. 这些方法包括两大类:1.执行命令,2.接收返回值 cursor用来执行命令的方法: callproc(self, procname, args):用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数 execute(self, query, args):执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数 executemany(self, query, args):执行单挑sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数

nextset(self):移动到下一个结果集 cursor用来接收返回值的方法: fetchall(self):接收全部的返回结果行. fetchmany(self, size=None):接收size条返回结果行.如果size 的值大于返回的结果行的数量,则会返回cursor.arraysize条数据. fetchone(self):返回一条结果行. scroll(self, value, mode='relative'):移动指针到某一行.如果mode='relative',则表示从当前所在行移动value条,如果 mode='absolute',则表示从结果集的第一行移动value条. 下面的代码是一个完整的例子. #使用sql语句,这里要接收的参数都用%s占位符.要注意的是,无论你要插入的数据是什么类型,占位符永远都要用%s sql="insert into cdinfo values(%s,%s,%s,%s,%s)" #param应该为tuple或者list param=(title,singer,imgurl,url,alpha) #执行,如果成功,n的值为1 n=cursor.execute(sql,param) #再来执行一个查询的操作 cursor.execute("select * from cdinfo") #我们使用了fetchall这个方法.这样,cds里保存的将会是查询返回的全部结果.每条结果都是一个tuple类型的数据,这些tuple组成了一个tuple

python的Mysql数据库连接

#!/ usr/ bin/ env python #-*- encoding: UTF- 8-*- """ 测试MySQL的连接及操作 """ import MySQLdb connstring= "host='localhost',port=3306,user='root',passwd='*****',db='python'" #连接字符串 try: conn= MySQLdb. connect( connstring) except Exception, e: print e break mycursor= conn. cursor() #获取游标,用游标操作数据库 #创建表 ctable="""CREATE TABLE test if not exists(name VARCHAR(30),uid INT(10) primary key)""" mycursor. execute( ctable) #插入数据 insert1="""INSERT INTO test(name='aaa',uid=111)""" insert2="""INSERT INTO test(name='bbb',uid=222)""" insert3="""INSERT INTO test(name='ccc',uid=333)""" inserts=[] inserts[ 0]. append( insert1) inserts[ 1]. append( insert2) inserts[ 2]. append( insert3) for insert in inserts: try: mycursor. execute( insert) except Exception, e: print e #删除数据 #注释掉,下边查询要用到数据,只记录操作 #mycursor. execute("""DELETE FROM test WHERE name='aaa'""") #多表删除 #delmany="""" DELETE FROM table1, table2, table3 WHERE table1. uid= XXX AND table2. uid= table3. uid""" #mycursor.execute(delmany) 继续......

python2.7及mysql-python模块安装指南

升级至python2.7、mysql-python Linux下安装MySQL 笔记本:python相关 创建于:2011/11/16 10:57更新于:2011/11/16 10:59 URL:https://www.360docs.net/doc/c611620445.html,/minglog/archive/2011/4/20.html centos5.x升级至python2.7、mysql-python centos5.3的python版本真让人泪奔,什么时代了还2.4的。自己动手丰衣足食。 1.从官网下载 2.7版本 # wget https://www.360docs.net/doc/c611620445.html,/ftp/python/2.7.1/Python-2.7.1.tar.bz2 2.安装 # tar -jxvf Python-2.7.1.tar.bz2 # cd Python-2.7.1 # ./configure (如不指定 --prefix,默认安装在/usr/local/lib/python2.7) # make && make install 3.升级默认版本 # mv python /usr/bin/python24 # ln -s /usr/local/bin/python2.7 /usr/bin/python

4.安装m ysql-python (安装方法不了解可以参看包内的README) # python setup.py build Traceback (most recent call last): File "setup.py", line 5, in from setuptools import setup, Extension ImportError: No module named setuptools 什么情况?貌似setuptools没有 5.去官网下载setuptools 官网下载地址 # bash setuptools-0.6c11-py2.7.egg Traceback (most recent call last): File "", line 1, in zipimport.ZipImportError: can't decompress data; zlib not available 又是什么情况?缺少zlib?(关于安装python所需的软件环境可参看README) 这一步我花了很长时间解决它,过程实在是很让人不爽。从上面这个错误提示似乎是zlib没有,最先想到的是使用yum安装zlib*。 # rpm -qa | grep zlib zlib-1.2.3-3 zlib-devel-1.2.3-3 重新编译python以后,依旧提示这个错误"zipimport.ZipImportError: can't decompress data; zlib not available",到最后都有点抓狂了。快要发飙的时候浏览了zlib的官站,它的最新版本是zlib-1.2.5。我决定用 tar包安装最新版本试试。 安装过程非常简单,仍是老三步:

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

python操作MySQL数据库

python操作MySQL数据库 https://www.360docs.net/doc/c611620445.html,/rollenholt/archive/2012/05/29/2524327.html https://www.360docs.net/doc/c611620445.html,/rollenholt/archive/2012/05/29/2524327.html 2012-05-29 17:41 by Rollen Holt, 216851 阅读, 29 评论, 收藏, 编辑 坚持每天学一点,每天积累一点点,作为自己每天的业余收获,这个文章是我在吃饭的期间写的,利用自己零散的时间学了一下python操作MYSQL,所以整理一下。 我采用的是MySQLdb操作的MYSQL数据库。先来一个简单的例子吧: 请注意修改你的数据库,主机名,用户名,密码。 下面来大致演示一下插入数据,批量插入数据,更新数据的例子吧:

请注意一定要有https://www.360docs.net/doc/c611620445.html,mit()这句来提交事务,要不然不能真正的插入数据。 运行之后我的 MySQL 数据库的结果就不上图了。

运行结果就不贴了,太长了。 查询后中文会正确显示,但在数据库中却是乱码的。经过我从网上查找,发现用一个属性有可搞定:

在Python代码 conn = MySQLdb.Connect(host='localhost', user='root', passwd='root', db='python ') 中加一个属性: 改为: conn = MySQLdb.Connect(host='localhost', user='root', passwd='root', db='python',ch arset='utf8') charset是要跟你数据库的编码一样,如果是数据库是gb2312 ,则写charset='gb2312'。 下面贴一下常用的函数: 然后,这个连接对象也提供了对事务操作的支持,标准的方法 commit() 提交 rollback() 回滚 cursor用来执行命令的方法: callproc(self, procname, args):用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数 execute(self, query, args):执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数 executemany(self, query, args):执行单挑sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数 nextset(self):移动到下一个结果集 cursor用来接收返回值的方法: fetchall(self):接收全部的返回结果行. fetchmany(self, size=None):接收size条返回结果行.如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据. fetchone(self):返回一条结果行. scroll(self, value, mode='relative'):移动指针到某一行.如果mode='relative',则表示从当前所在行移动value条,如果mode='absolute',则表示从结果集的第一行移动value条. 参考资料: MySQLdb‘s user guide package MySQLdb ============================================================= ================= 我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他 们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧

python访问数据库, SQLAlchemy中的Query方法

SQLAlchemy中的Query方法 在SQLAlchemy中执行查询是通过session对象的query方法完成的。query方法非常灵活,你可以根据需要使用不同的查询方式查找数据,下面一一举例。 1.直接通过映射类查找: #Querying user instance for instance in session.query(User).order_by(User.id): print https://www.360docs.net/doc/c611620445.html,,instance.fullname 这种方法只要在query方法中,将映射类作为参数,就可以查询出这个映射类代表的数据库表中的数据。其相当于下面的SQL语句: SELECT users.id AS users_id, https://www.360docs.net/doc/c611620445.html, AS users_name, users.fullname AS users_fullname, users.password AS users_password FROM users ORDER BY users.id 2.通过映射类的属性字段查询: #Querying by ORM-instrument for name,fullname in session.query(https://www.360docs.net/doc/c611620445.html,,User.fullname): print name,fullname 这种方法指定了查询的具体字段,而不是像第一种方法那样把映射类的所有字段都查询出来,其相当于执行了下面的SQL语句: SELECT https://www.360docs.net/doc/c611620445.html, AS users_name, users.fullname AS users_fullname FROM users 3.query查询的结果是保存在一个元组中的,所以我们可以在query中指定返回整个的映射类对象和其中的部分属性字段: #Querying as a Python object for row in session.query(User,https://www.360docs.net/doc/c611620445.html,).all(): print https://www.360docs.net/doc/c611620445.html,er,https://www.360docs.net/doc/c611620445.html, 这种查询方法可以返回一个User对象以及它的name属性字段的值,其相当于执行了下面的SQL语句: SELECT users.id AS users_id, https://www.360docs.net/doc/c611620445.html, AS users_name, users.fullname AS users_fullname, users.password AS users_password FROM users 其输出结果为一个元组和一个字符串: <user("ed","Ed Jones","f8x902")> ed <user("Wendy","Wendy Williams","foobar")> Wendy <user("Marry","Marry Contrary","xxg527")> Marry <user("Fred","Fred Flinstone","blah")> Fred 4.我们还可以给返回的结果起一个别名,或者叫标签: #Querying labeled

Python操作Mysql实例代码教程

本文介绍了Python操作MYSQL、执行SQL语句、获取结果集、遍历结果集、取得某个字段、获取表字段名、将图片插入数据库、执行事务等各种代码实例和详细介绍,代码居多,是一桌丰盛唯美的代码大餐。 实例1、取得MYSQL的版本 在windows环境下安装mysql模块用于python开发,请见我的另一篇文章: MySQL-python Windows下EXE安装文件下载 # -*- coding: UTF-8 -*- #安装MYSQL DB for python import MySQLdb as mdb con = None try: #连接mysql的方法:connect('ip','user','password','dbname') con = mdb.connect('localhost', 'root', 'root', 'test'); #所有的查询,都在连接con的一个模块cursor上面运行的 cur = con.cursor() #执行一个查询 cur.execute("SELECT VERSION()") #取得上个查询的结果,是单个结果 data = cur.fetchone() print "Database version : %s " % data finally: if con: #无论如何,连接记得关闭 con.close() 执行结果: Database version : 5.5.25 实例2、创建一个表并且插入数据 主要还是在cursor上面执行execute方法来进行,请见源码: # -*- coding: UTF-8 -*- # 来源于https://www.360docs.net/doc/c611620445.html,总结整理 import MySQLdb as mdb import sys

Python 的数据库操作

数据库的操作在目前的 Python 里面已经变得十分的好用,因为有了一套 API 标准。本文下面就讲讲如何使用这套API。它包括以下部分: ?模块接口 ?连接对象 ?游标对象 ?数据类型与定义 ?例子 一、模块接口 connect( parameters... ) 其中的参数格式如下: dsn 数据源名称 user 用户名(可选) password 密码(可选) host 主机名(可选) database 数据库名(可选) 举个例子: connect(dsn=''myhost:MYDB'',user=''guido'',password=''234$'') 或者 connect(''218.244.20.22'',''username'',''password'',''databas ename'') 此标准规定了以下的一些全局变量, apilevel: 表示 DB-API 的版本,分 1.0 和 2.0 。如果没有定义,则默认为 1.0。threadsafety: 0 Threads may not share the module. 1 Threads may share the module, but not connections.

2 Threads may share the module and connections. 3 Threads may share the module, connections and cursors. paramstyle: 用于表示参数的传递方法,分为以下五种: ''qmark'' 问号标识风格. e.g ''... WHERE name=?'' ''numeric'' 数字,占位符风格. e.g ''... WHERE name=:1'' ''named'' 命名风格. e.g ''WHERE name=:name'' ''format'' ANSI C printf风格. e.g ''... WHERE name=%s'' ''pyformat'' Python扩展表示法. e.g ''... WHERE name=%(name)s'' 异常类: StandardError |__Warning |__Error |__InterfaceError |__DatabaseError |__DataError |__OperationalError |__IntegerityError |__InternalError |__ProgrammingError |__NotSupportedError 二、连接对象 连接对象包含如下方法: .close() 关闭连接 .commit() 用于事务处理里面的提交操作 .rollback() 用于事务处理里面的回滚操作

python数据库操作

数据库连接 # coding:gbk ''' Created on 2010-7-15 @author: Administrator ''' import cx_Oracle dsn=cx_Oracle.makedsn("150.150.1.45",1521,"dx") conn=cx_Oracle.connect("test","123",dsn) print"连接oracle成功!" try: cur=conn.cursor() sql="select * from portt_type" rr=cur.execute(sql) row=cur.fetchall() for x in row: print"记录",x[0],x[1] cur.close() except Exception,e: print e else: print"一切正常" finally: conn.close() print"连接关闭" 数据库操作 # coding:gbk ''' Created on 2010-7-15 @author: Administrator ''' import cx_Oracle

#用户名,密码,服务名 db=cx_Oracle.connect("user","pass","tns_name") c=db.cursor(); #建表 c.execute("create table test(a int,b varchar2(100))") #建序列 c.execute("create sequence stest") #插入数据 c.execute("insert into test(a,b) values(stest.nextval,'Python')") c.execute("insert into test(a,b) values(stest.nextval,'Oracle')") #检索插入的数据 sql = "select * from test" r = c.execute(sql) row = c.fetchone() while row: (a,b)=(row[0],row[1]) print a,b row=c.fetchone() #删除插入的数据 sql = "delete from test where a=1" c.execute(sql) #检索

python操作mysql进行更新

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 if1!=res : print'failed' else: print'success' def insert_many(cur,sql,values): res =cur.executemany(sql ,values) # 插入成功,res 返回值为1 if1!=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):

八、Python MySQL(pymysql)

调用步骤 1.cmd 安装:pip install pymysql 2.导入:import pymysql 3.建立连接:conn = pymysql.connect(user='用户名',password='密码',database='库 名',charset='utf8') 4.建立游标:cursor() 5.查询语句:sql = ('sql语句,所有输入参数用%s表示') 6.执行:cursor.execute(sql,(输入参数1,输入参数2......输入参数N)) 7.查询打印:for (表字段1,表字段2) in cursor: print(表字段1,表字段2) 8.提交(新增、修改、删除):https://www.360docs.net/doc/c611620445.html,mit() 9.关闭游标,关闭连接:cursor.close conn.close 安装mysql,创建库,表,增加记录 CREATE DATABASE pytest; USE pytest; CREATE TABLE student( NAME VARCHAR(20), age INT ); DELETE FROM student; INSERT INTO student(NAME,age) VALUES('zhangshan',20); INSERT INTO student(NAME,age) VALUES('lisi',88); mysqldb.py 文件内容(操作数据库): #!/usr/bin/python # ‐*‐ coding: UTF‐8 ‐*‐ import pymysql #连接数据库 conn = pymysql.connect(user='root',password='root',database='pytest',charset='utf8') cur = conn.cursor() #不论是什么数据类型,占位符都用%s #带条件查询 sql = ('SELECT * FROM student WHERE NAME =%s AND age =%s') cur.execute(sql,('zhangshan',20)) #不带条件查询

利用python实现将txt文件导入到mysql的应用实例

利用python实现将txt文件导入到mysql的应用实例 实现思想:1、python自动完成在txt文件中加入自定义标签(简单的txt文件 可以不需要),2、python自动完成将含有自定义标签的txt文件导入到 mysql。除了原始txt文件的内容外。整个实现过程全部由python程序自动完成,运行环境是在centos7的python2.7,本例省去了用python建立mysql数据库(和表)的过程。 1、原始txt文件显示(举例)如下: 排名 1 公司名称沃尔玛(WAL-MART STORES) 营业收入476294 利润16022 国家美国 排名 2 公司名称荷兰皇家壳牌石油公司 营业收入459599 利润16371 国家荷兰 排名 3 公司名称中国石油化工集团公司(SINOPEC GROUP) 营业收入432007.7 利润8932.1 国家中国 排名 4 公司名称中国石油天然气集团公司 营业收入416294 利润18504.8 国家中国 排名 5 公司名称埃克森美孚(EXXON MOBIL) 营业收入407666 利润32580 国家美国 排名 6 公司名称英国石油公司(BP) 营业收入396217 利润23451 国家英国 排名7 公司名称国家电网公司(STATE GRID) 营业收入333386.5 利润7982.8 国家中国

排名8 公司名称大众公司(VOLKSWAGEN) 营业收入261539.1 利润12071.5 国家德国 排名9 公司名称丰田汽车公司(TOYOTA MOTOR) 营业收入256454.8 利润18198.2 国家日本 排名10 公司名称嘉能可(GLENCORE) 营业收入232694 利润-7402 国家瑞士 #后面内容省略…… 说明以上txt文件来源2015世界500强公司排名完整榜单 注:收入和利润单位为百万美元 2、含有自定义标签的文件显示(举例)如下: 排名1 公司名称沃尔玛(WAL-MART STORES) 营业收入476294 利润16022 国家美国 排名2 公司名称荷兰皇家壳牌石油公司 营业收入459599 利润16371 国家荷兰 排名3 公司名称中国石油化工集团公司(SINOPEC GROUP) 营业收入432007.7 利润8932.1 国家中国 排名4 公司名称中国石油天然气集团公司 营业收入416294 利润18504.8 国家中国 排名5 公司名称埃克森美孚(EXXON MOBIL) 营业收入407666 利润32580

相关主题
相关文档
最新文档