Python操作MySQL

设置MySQL

在Linux上,需要编辑MySQL的配置文件,把数据库默认的编码全部改为UTF-8。MySQL的配置文件默认存放在/etc/my.cnf或者/etc/mysql/my.cnf:

[client]
default-character-set = utf8

[mysqld]
default-storage-engine = INNODB
character-set-server = utf8
collation-server = utf8_general_ci

重启MySQL后,可以通过MySQL的客户端命令行检查编码:

$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor...
...

mysql> show variables like '%char%';
+--------------------------+--------------------------------------------------------+
| Variable_name            | Value                                                  |
+--------------------------+--------------------------------------------------------+
| character_set_client     | utf8                                                   |
| character_set_connection | utf8                                                   |
| character_set_database   | utf8                                                   |
| character_set_filesystem | binary                                                 |
| character_set_results    | utf8                                                   |
| character_set_server     | utf8                                                   |
| character_set_system     | utf8                                                   |
| character_sets_dir       | /usr/local/mysql-5.1.65-osx10.6-x86_64/share/charsets/ |
+--------------------------+--------------------------------------------------------+
8 rows in set (0.00 sec)

看到utf8字样就表示编码设置正确。另一种设置方法如下

set character_set_server=utf8  #重启会失效

注:如果MySQL的版本≥5.5.3,可以把编码设置为utf8mb4,utf8mb4和utf8完全兼容,但它支持最新的Unicode标准,可以显示emoji字符。

 

安装MySQL驱动

由于MySQL服务器以独立的进程运行,并通过网络对外服务,所以,需要支持Python的MySQL驱动来连接到MySQL服务器。MySQL官方提供了mysql-connector-python驱动,但是安装的时候需要给pip命令加上参数--allow-external:

$ pip3 install mysql-connector-python --allow-external mysql-connector-python

如果上面的命令安装失败,可以试试另一个驱动:

$ pip install mysql-connector

 

例子

我们演示如何连接到MySQL服务器的test数据库: 

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
mysql驱动
pip install mysql-connector

如果MySQL的版本≥5.5.3,可以把编码设置为utf8mb4
utf8mb4和utf8完全兼容,但它支持最新的Unicode标准,可以显示emoji字符。

"""
# 导入MySQL驱动
import mysql.connector
# 连接数据库,名称为mysql的名称,安装时已经设置
conn=mysql.connector.connect(host='192.168.1.164',user='root',password='123456',database='test')
cursor=conn.cursor()
# 建表
#cursor.execute('create table user1 (id varchar(20) primary key,name varchar(20))')

# 添加数据
for x in range(2,4):
    # MySQL的SQL占位符是%s
    cursor.execute('insert into user (id,name) values (%s,%s)',[x,'jiang'+str(x)])
cursor.rowcount

#执行INSERT等操作后要调用commit()提交事务;
conn.commit()
cursor.close()

#查询
cursor=conn.cursor()
cursor.execute("select * from user")

values=cursor.fetchall()
print(values)

cursor.close()
conn.close

查询结果以列表形式返回

[('1', 'Michael'), ('2', 'jiang2'), ('3', 'jiang3')]

  

posted @ 2018-05-06 10:47  Gringer  阅读(251)  评论(0编辑  收藏  举报