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

在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()。一般情况下都是可以的了。

你可能感兴趣的:(数据库)