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')]

浙公网安备 33010602011771号