python数据库编程
来源:互联网 发布:韩国古代历史 知乎 编辑:程序博客网 时间:2024/05/21 02:33
1、mysql的安装
www.mysql.com/downloads/
2、python的安装
https://www.python.org/
3、MySQL_python-1.2.5-cp27-none-win_amd64.whl,mysqlclient-1.3.8-cp27-cp27m-win_amd64.whl 的安装
(1)下载两个文件
(2)使用pip install MySQL_python-1.2.5-cp27-none-win_amd64.whl就可以进行安装了
4、python上mysql编程
(1)获取mysql的版本信息
# python获取mysql版本信息# -*- coding: UTF-8 -*-# 安装 MYSQL DB for pythonimport MySQLdb as mdbcon = Nonetry: # 连接 mysql 的方法: connect('ip','user','password','dbname') con = mdb.connect('localhost', 'root', 'mysql', 'test') # 所有的查询,都在连接 con 的一个模块 cursor 上面运行的 cur = con.cursor() # 执行一个查询 cur.execute("SELECT VERSION()") # 取得上个查询的结果,是单个结果 data = cur.fetchone() # 取出一个 print "Database version : %s " % datafinally: if con: # 无论如何,连接记得关闭 con.close()
output:
Database version : 5.5.29
(2)创建一个表并插入数据
# -*- coding: UTF-8 -*-import MySQLdb as mdbimport sys# 将 con 设定为全局连接con = mdb.connect('localhost', 'root', 'mysql', 'test')with con: # 获取连接的 cursor,只有获取了 cursor,我们才能进行各种操作 cur = con.cursor() # 创建一个数据表 writers(id,name) cur.execute("CREATE TABLE IF NOT EXISTS Writers(Id INT PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(25))") # 以下插入了 5 条数据 cur.execute("INSERT INTO Writers(Name) VALUES('Jack London')") cur.execute("INSERT INTO Writers(Name) VALUES('Honore de Balzac')") cur.execute("INSERT INTO Writers(Name) VALUES('Lion Feuchtwanger')") cur.execute("INSERT INTO Writers(Name) VALUES('Emile Zola')") cur.execute("INSERT INTO Writers(Name) VALUES('Truman Capote')") # 类似于其他语言的 query 函数, execute 是 python 中的执行查询函数 cur.execute("SELECT * FROM Writers") # 使用 fetchall 函数,将结果集(多维元组)存入 rows 里面 rows = cur.fetchall() # 依次遍历结果集,发现每个元素,就是表中的一条记录,用一个元组来显示 for row in rows: print row
output:
(1L, 'Jack London')(2L, 'Honore de Balzac')(3L, 'Lion Feuchtwanger')(4L, 'Emile Zola')(5L, 'Truman Capote')(6L, 'Jack London')(7L, 'Honore de Balzac')(8L, 'Lion Feuchtwanger')(9L, 'Emile Zola')(10L, 'Truman Capote')...
(3)使用select语句获取表的数据
# -*- coding: UTF-8 -*-import MySQLdb as mdb# 获取mysql的连接对象con = mdb.connect('localhost', 'root', 'mysql', 'test')with con: # 获取执行查询的对象 cur = con.cursor() # 执行查询,使用select语句 cur.execute("select * from writers") # 使用cur.rowcount 获取结果集的条数 numrows = int(cur.rowcount) print numrows # 循环 numrows 次,每次取出一行数据 for i in range(0, numrows): row = cur.fetchone() print row[0], row[1]
(4)使用字典 cursor 取得结果集
# -*- coding: UTF-8 -*-import MySQLdb as mdb# 获取mysql查询链接对象con = mdb.connect('localhost', 'root', 'mysql', 'test')with con: # 获取字典cursor cur = con.cursor(mdb.cursors.DictCursor) # 执行语句不变 cur.execute("select * from Writers") # 获取数据方法不变 rows = cur.fetchall() print rows # rows以字典方式存储 # 按照键值对输出 for row in rows: print "%s %s" % (row['Id'], row['Name'])
output:
1 Jack London2 Honore de Balzac3 Lion Feuchtwanger4 Emile Zola5 Truman Capote6 Jack London7 Honore de Balzac8 Lion Feuchtwanger9 Emile Zola10 Truman Capote...
(5)更新writers的数据
# -*- coding:UTF-8 -*-import MySQLdb as mdb'''更新writers的数据'''con = mdb.connect('localhost', 'root', 'mysql', 'test')with con: cur = con.cursor() cur.execute("select * from writers") row = cur.fetchall() print "before update:" print row[3][0], row[3][1] print cur.execute("UPDATE Writers SET Name=%s WHERE Id = %s", ("Guy Maupasant", "4")) print "Number of rows updated:%d" % cur.rowcount cur.execute("select * from writers") rows = cur.fetchall() # print rows print "after update:" print rows[3][0], rows[3][1] # for row in rows: # print row
output:
before update:4 Guy de MaupasantNumber of rows updated:1after update:4 Guy Maupasant
(6)获取单个表的字段名和信息的方法
# -*- coding: UTF-8 -*-import MySQLdb as mdb'''获取单个表的字段名和信息的方法'''# 获取数据库对象con = mdb.connect('localhost', 'root', 'mysql', 'test')with con: # 获取普通的查询 cur = con.cursor() # 执行查询操作 cur.execute("select * from writers") # 获取所有行 rows = cur.fetchall() print rows print # 获取连接对象的描述信息 desc = cur.description print "cur.description:", desc print # 打印表头,就是字段名字 print "%s %s" % (desc[0][0], desc[1][0]) print # 打印结果 for row in rows: print "%s %s" % row
output:
cur.description: (('Id', 3, 2, 11, 11, 0, 0), ('Name', 253, 17, 25, 25, 0, 1))Id Name1 Jack London2 Honore de Balzac3 Lion Feuchtwanger4 Guy Maupasant5 Truman Capote...
(7)创建一个数据库python,并创建表test,插入100条数据
# -*- coding:UTF-8 -*-import MySQLdb as mdb'''创建一个数据库python,并创建表test,插入100条数据'''con = mdb.connect('localhost', 'root', 'mysql')with con: cur = con.cursor() cur.execute("create database python") cur.execute("use python") cur.execute("create table test(id int, content VARCHAR(100))") for i in range(1, 101): cur.execute("insert into test VALUES(%s, %s)",[i, 'haha']) cur.execute("select * from test") rows = cur.fetchall() for row in rows: print row
(8)函数解析
''' connect()函数: 生成一个connect对象,用于访问数据库,其参数如下:user, password, host, database connect()对象方法: close():关闭数据库连接,或者关闭游标对象 commit():提交当前事务 rollback():取消当前事务 cursor():创建游标或类游标对象 errorhandler(cxn, errcls, errval):作为已给游标的句柄 注意:执行close()方法则上述的连接对象方法不能再使用,否则发生异常。 commit()、rollback()、cursor()或许更对于支持事务的数据库更有意义。 数据库事务,是指作为单个逻辑工作单元执行的一系列操作,要么完整执行,要么完全不执行。 一旦完成了数据库连接,关闭了游标对象,然后在执行commit()提交操作,然后关闭连接。 cursor()游标对象的属性和方法: fetchone():fetch(取出)one(一个),也就是得到结果集的下一行 fetchmany(size):fetch(取出)many(多个) fetchall:fetch(取出)all(所有) execute(sql):执行数据库操作,参数为sql语句 close():不需要游标时进行关闭操作'''
(9)xlrd读取Excel,并写入到MySQL中
# -*- coding:UTF-8 -*-import MySQLdb as mdbimport xlrd # 导入xlrd模块def read_excel(): workbook = xlrd.open_workbook("20142015.xls") # 打开Excel文件读取数据 table = workbook.sheets()[0] # 获取一个工作表,通过索引顺序获取 rows = table.nrows # 行数 cols = table.ncols # 列数 # print "行×列:", rows, "×", cols row = [] for i in range(rows): # 按行遍历 row.append(table.row_values(i)) # print row list = [] result = [] for i in range(1, len(row)): # 将Excel中的数据一个一个放入到list列表中 for j in range(cols): list.append(row[i][j]) result.append(list) list = [] # print list[1] print result[0][0], result[0][5] print result[1][0] print len(result) con = mdb.connect('localhost', 'root', 'mysql', charset='utf8') with con: cur = con.cursor() cur.execute("use datatest") cur.execute( "create table news(id CHAR(6) ,title varchar(100), department VARCHAR(50), dates VARCHAR(30),amount VARCHAR(10) , notice VARCHAR(10))") for i in range(len(result)): sql = "insert into news(id, title, department, dates, amount, notice) VALUES ('%s','%s','%s','%s','%s','%s')" % ( result[i][0], result[i][1], result[i][2], result[i][3], result[i][4], result[i][5]) cur.execute(sql)if __name__ == "__main__": read_excel()
0 0
- python数据库编程_sqlite
- python数据库编程_sqlite
- python mysql数据库编程
- python数据库编程
- Python 的数据库编程
- python数据库编程
- 【实例】 python数据库编程
- python数据库编程
- Python数据库编程
- Python数据库编程
- 用Python实现数据库编程
- 用Python实现数据库编程
- 用PYTHON进行数据库编程
- 用Python实现数据库编程
- 用Python实现数据库编程
- Python对Mysql数据库编程
- python----文件、数据库、网络编程
- Python对Mysql数据库编程
- React.createElement使用
- 正式开博
- [剑指offer学习心得]之:圆圈中最后剩下的数字
- 最新版本ButterKnife8.4的使用
- nyoj 311 和995
- python数据库编程
- UniversalPreferences
- error while trying to retrieve text error ora-12541 错误记录
- 把做事情做出成绩的三个关键习惯
- 解决Error:svn: E155037: Previous operation has not finished; run 'cleanup' if it was interrupted
- java ThumbnailAPI在线文档
- iOS iOS10 打印日志
- 浅析java中的Class类及其对象
- 大端、小端、魔数等概念