python2学习笔记之mysql连接,中文乱码的解决和文件api的使用

本文详细介绍了使用Python连接并操作MySQL数据库的方法,包括创建数据库、表及执行SQL语句进行数据增删查改。
__author__ = 'Administrator'
# encoding=utf-8

#http://www.w3cschool.cc/python/python-mysql.html
import  MySQLdb

db=MySQLdb.connect(host="localhost",user="root",passwd="mysql0774mysql",db="itcast",charset="utf8")
#db=MySQLdb.connect("localhost","root","mysql0774mysql","itcast") #存在中文乱码
cursor=db.cursor()
cursor.execute("select VERSION()")
data=cursor.fetchone()
print("database version:%s" % data)

#创建数据库表
cursor.execute("drop table if EXISTS student")
sql="""create table student(first_name VARCHAR(20) NOT NULL,
last_name VARCHAR(20),age int,sex CHAR(1),income FLOAT )"""
cursor.execute(sql)

# SQL 插入语句
sql = """INSERT INTO student(first_name,
         last_name, AGE, SEX, income)
         VALUES ('Mac', 'Mohan中文', 20, 'M', 2000)"""
try:
   # 执行sql语句
   cursor.execute(sql)
   cursor.execute(sql)
   cursor.execute(sql)
   # 提交到数据库执行
   db.commit()
except:
   # Rollback in case there is any error
   db.rollback()

# SQL 更新语句
sql = "UPDATE student SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')
try:
   # 执行SQL语句
   cursor.execute(sql)
   # 提交到数据库执行
   db.commit()
except:
   # 发生错误时回滚
   db.rollback()

#获取数据
# SQL 查询语句
sql = "SELECT * FROM student \
       WHERE INCOME > '%d'" % (1000)
try:
   # 执行SQL语句
   cursor.execute(sql)
   # 获取所有记录列表
   results = cursor.fetchall()
   f=file("data.txt","w")
   for row in results:
       fname = row[0]
       lname = row[1]
       age = row[2]
       sex = row[3]
       income = row[4]
       print ("fname=%s,lname=%s,age=%d,sex=%s,income=%d" % (fname, lname, age, sex, income ))
        #f.write(lname.encode('utf-8'))
       f.write(fname.encode('utf-8'))
       f.write(lname.encode('utf-8'))
       f.write(str(age))
       f.write(sex.encode("utf-8"))
       f.write(str(income))
   f.close()

except:
   print "Error: unable to fecth data"


db.close()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值