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

python链接mysql数据库及中文编码问题

2016-08-04 14:07 519 查看
在python中链接mysql数据库需要下载MySQLdb模块,命令很简单:

pip install MySQLdb


安装完该模块之后只需要在编程的时候import就可以了。

接下来介绍一下常用的数据库操作命令。先定义一个DBConn的类,用于解决数据库连接/事务提交/数据库关闭的功能。

# -*- coding: UTF-8 -*-
import MySQLdb

class DBConn(object):
conn = None

#建立和数据库系统的连接
#注意这里在数据库中有中文时,必须指定连接的编码方式为utf8,不然插入数据库时会出现乱码,导致出错。
def connect(self):
self.conn = MySQLdb.connect(host="localhost",port=3306,user="root", passwd="××××(改成自己的密码)" ,db="house",charset="utf8")

#获取操作游标
def cur(self):
try:
return self.conn.cursor()
except (AttributeError, MySQLdb.OperationalError):
self.connect()
return self.conn.cursor()

def commit(self):
return self.conn.commit()

#关闭连接
def close(self):
return self.conn.close()


然后介绍一下数据库常用的操作,所有的操作都通过cur.execute()函数进行提交,该函数第一个参数为要执行的mysql数据库命令,第二个参数为提供的python程序中的相关变量列表:

#创建数据表
cur.execute("create table student(id int ,name varchar(20),class varchar(30),age varchar(10))")

#插入一条数据,可以直接插,也可以将要查的数据以列表形式提供
cur.execute("insert into student values('2','Tom','3 year 2 class','9')")
cur.execute("insert into student values(%s,%s,%s,%s)",['2','Tom','3 year 2 class','9'])

#修改查询条件的数据
cur.execute("update student set class='3 year 1 class' where name = 'Tom'")

#删除查询条件的数据
cur.execute("delete from student where age='9'")


好了,简单的数据库操作命令已经介绍完毕,接下来说一说中文编码问题。这里主要涉及两个方面,一个是数据库本身的编码方式,一个是python程序的编码方式。第一个问题可以参考之前写的一篇文章,第二个问题就是上面提到的在连接数据库的时候一定要设置charset=”utf8”,这一点很关键。如果还是不行的话,可以尝试将插入数据库的字符串改编码格式。比如说要将str变量插入数据库,那么可以在插入之前进行str.encode()。一般情况下都是可以的了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: