您的位置:首页 > 编程语言 > Python开发

Python MySQL操作

2016-07-05 22:56 477 查看

导入MySQLdb包

import MySQLdb


连接数据库

con = MySQLdb.connect(host="localhost", user="root", passwd="123456",db="xblog",port=3306)


完成python的数据库连接, 但是不能在这个对象上直接对数据库进行操作, 还需要获取对应的操作游标才能进行数据库的操作

cur = con.cursor()


cur.execute('create table stu_info (name char(128) not null default "", age tinyint(3) not null default 0, sex enum("man","femal") not null default "man") engine=innodb ')


0L


cur.execute 返回执行的sql 影响的行数, 因为这里是创建数据库, 所以是0L行。但到这里还并没有真正执行了sql语句, 必须使用MySQLdb.commit才是真正执行完毕

con.commit()


梳理下步骤

在数据库连接上的情况下,获取操作游标

cur.execute(“mysql script”)提交mysql语句

con.commit()执行提交的mysql语句

更新表数据(两种方式)

单步插入

cur.execute("insert into stu_info (name, age, sex) values ('Yi_Zhi_Yu',25,'man')")
con.commit()


或者用下面这种方式:

批量插入

cur.execute("insert into stu_info (name, age, sex) values (%s,%s,%s)", ("Tony",25, "man"))
con.commit()


第二种方式可以传递多列表值,即可以批量的导入数据进数据库。

cur.executemany("insert into stu_info (name, age, sex) values (%s,%s,%s)",(("LiMei",26,"femal"),("YuanYuan",28,"femal")))
con.commit()


数据查询(两种方式)

无字段名查询

cur.execute("select * from stu_info")
stus = cur.fetchall()
for stu in stus:
print "name: %s; age: %d; sex: %s" %(stu[0], stu[1], stu[2])


name: Yi_Zhi_Yu; age: 25; sex: man
name: Tony; age: 25; sex: man
name: LiMei; age: 26; sex: femal
name: YuanYuan; age: 28; sex: femal
name: Yi_Zhi_Yu; age: 25; sex: man


有字段名查询

cur = con.cursor(cursorclass=MySQLdb.cursors.DictCursor)
cur.execute("select * from stu_info")
cur.fetchall()


({'age': 25, 'name': 'Yi_Zhi_Yu', 'sex': 'man'},
{'age': 25, 'name': 'Tony', 'sex': 'man'},
{'age': 26, 'name': 'LiMei', 'sex': 'femal'},
{'age': 28, 'name': 'YuanYuan', 'sex': 'femal'},
{'age': 25, 'name': 'Yi_Zhi_Yu', 'sex': 'man'})


con.close()


总结

Python 中对数据的操作, 增删改均要在指针对象执行了sql语句后, 使用连接对象commit, 查询的结果使用指针对象的fetch系列方法获取

参考

diancody CSDN博客


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python mysql 数据库