python之数据库操作
来源:互联网 发布:参知政事和同平章事 编辑:程序博客网 时间:2024/05/16 04:41
python操作sql server 数据库
python标准数据库接口为python DB-API,具体可参考:https://wiki.python.org/moin/DatabaseInterfaces
Python的DB-API,为大多数的数据库实现了接口,使用它连接各数据库后,就可以用相同的方式操作各数据库。
Python DB-API使用流程:
- 引入 API 模块。
- 获取与数据库的连接。
- 执行SQL语句和存储过程。
- 关闭数据库连接。
本文是基于操作sql server,引入的模快pymssql
可参考:http://pymssql.org/en/stable/
操作流程:
1.导入模块
import pymssql
2.连接数据库
self.conn = pymssql.connect(host=self.host, user=self.user, password=self.pwd, database=self.db, charset="utf8")
提示:开启代理和TCP,使用sql server验证
3.执行SQL语句
cur = self.__GetConnect()cur.execute(sql)resList = cur.fetchall()
4.关闭流程
# # 查询完毕后必须关闭连接self.conn.close()
下面是一个简单数据库增删查改的例子:
# coding=utf-8"""@company:@version: ??@author: AA-ldc@file: testDB.py@time: 2017/3/20 9:24@function:数据库的操作"""import pymssqlclass MSSQL: """ 对pymssql的简单封装 pymssql库,该库到这里下载:http://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql 使用该库时,需要在Sql Server Configuration Manager里面将TCP/IP协议开启 用法: """ def __init__(self, host, user, pwd, db): self.host = host self.user = user self.pwd = pwd self.db = db def __GetConnect(self): """ 得到连接信息 返回: conn.cursor() """ if not self.db: raise (NameError, "没有设置数据库信息") self.conn = pymssql.connect(host=self.host, user=self.user, password=self.pwd, database=self.db, charset="utf8") cur = self.conn.cursor() if not cur: raise (NameError, "连接数据库失败") else: return cur def Commit(self): self.conn.commit() def Roolback(self): self.conn.rollback() def CreatTab(self): sql = """CREATE TABLE LWL( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, SEX CHAR(1), INCOME FLOAT )""" cur = self.__GetConnect() # 如果数据表已经存在使用 execute() 方法删除表。 # cur.execute("DROP TABLE IF EXISTS EMPLOYEE") try: # 执行sql语句 cur.execute(sql) # 提交到数据库执行 self.conn.commit() except: # Rollback in case there is any error self.conn.rollback() self.conn.close() def ExecQuery(self, sql): """ 执行查询语句 返回的是一个包含tuple的list,list的元素是记录行,tuple的元素是每行记录的字段 调用示例: ms = MSSQL(host="localhost",user="sa",pwd="123456",db="PythonWeiboStatistics") resList = ms.ExecQuery("SELECT id,NickName FROM WeiBoUser") for (id,NickName) in resList: print str(id),NickName """ cur = self.__GetConnect() cur.execute(sql) resList = cur.fetchall() # # 查询完毕后必须关闭连接 self.conn.close() return resList def ExecNonQuery(self, sql): """ 执行非查询语句 调用示例: cur = self.__GetConnect() cur.execute(sql) self.conn.commit() self.conn.close() """ cur = self.__GetConnect() cur.execute(sql) self.conn.commit() self.conn.close() def Insert(self): sql = """INSERT INTO Stu(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES ('Mac', 'Mohan', 20, 'M', 2000)""" cur = self.__GetConnect() try: # 执行sql语句 cur.execute(sql) # 提交到数据库执行 self.conn.commit() except: # Rollback in case there is any error self.conn.rollback() # 关闭数据库连接 self.conn.close()def main(): # ms = MSSQL(host="localhost",user="sa",pwd="123456",db="PythonWeiboStatistics") # #返回的是一个包含tuple的list,list的元素是记录行,tuple的元素是每行记录的字段 # ms.ExecNonQuery("insert into WeiBoUser values('2','3')") ms = MSSQL(host="localhost:1433", user='sa', pwd='123456', db="test") resList = ms.ExecQuery("SELECT name FROM person") for (name) in resList: print str(name).decode("utf8") ms.CreatTab() ms.Insert() resList = ms.ExecQuery("SELECT * FROM Stu") for (FIRST_NAME,LAST_NAME,AGE,SEX,INCOME) in resList: print str(FIRST_NAME).decode("utf8") print int(AGE)if __name__ == '__main__': main()
0 0
- python之数据库操作
- python之数据库操作
- python之mysql数据库操作
- Python之操作MySQL数据库
- python操作数据库之pymysql
- Python学习之数据库操作
- Python实战之MySQL数据库操作
- Python实战之Oracle数据库操作
- Python实战之Oracle数据库操作
- Python实战之Oracle数据库操作
- Python写自动化之数据库操作
- Python实战之Oracle数据库操作
- Python实战之MySQL数据库操作
- python操作数据库之批量导入
- Python之操作MySQL数据库(二)
- python 简单的数据库操作之转账
- Python实战之Oracle数据库操作
- 数据库之python+MySQL基本操作
- H.264的Slice及Slice类型
- shell如何把命令输出结果存入变量
- 447. Number of Boomerangs
- 529. Minesweeper(Medium)
- Android开发:最全面、最易懂的Webview详解
- python之数据库操作
- IntelliJ Idea编译报错:javacTask: 源发行版 1.7 需要目标发行版 1.7
- 监听EditText输入的字数
- 所有CSS伪类/元素
- 地图构建算法分析整理
- git 通过 https.proxy 下载github上的项目
- codeforces 779d
- Oracle JOB 案例
- 【DayDayUp】【算法_图_欧拉回路_之一_Fleury (弗罗莱) 算法】