MySQL是Web世界中使用最广泛的数据库服务器。SQLite的特点是轻量级、可嵌入,但不能承受高并发访问,适合桌面和移动应用。而MySQL是为服务器端设计的数据库,能承受高并发访问,同时占用的内存也远远大于SQLite。

此外,MySQL内部有多种数据库引擎,最常用的引擎是支持数据库事务的InnoDB。

安装MySQL

可以直接从MySQL官方网站下载最新的Community Server 5.6.x版本。MySQL是跨平台的,选择对应的平台下载安装文件,安装即可。

安装时,MySQL会提示输入root用户的口令,请务必记清楚。如果怕记不住,就把口令设置为password。

在Windows上,安装时请选择UTF-8编码,以便正确地处理中文。

在Mac或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字样就表示编码设置正确。

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

安装MySQL驱动

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

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

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

$ pip install mysql-connector

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

# 导入MySQL驱动:

>>> import mysql.connector

# 注意把password设为你的root口令:

>>> conn = mysql.connector.connect(user='root', password='password', database='test')

>>> cursor = conn.cursor()

# 创建user表:

>>> cursor.execute('create table user (id varchar(20) primary key, name varchar(20))')

# 插入一行记录,注意MySQL的占位符是%s:

>>> cursor.execute('insert into user (id, name) values (%s, %s)', ['1', 'Michael'])

>>> cursor.rowcount

1

# 提交事务:

>>> conn.commit()

>>> cursor.close()

# 运行查询:

>>> cursor = conn.cursor()

>>> cursor.execute('select * from user where id = %s', ('1',))

>>> values = cursor.fetchall()

>>> values

[('1', 'Michael')]

# 关闭Cursor和Connection:

>>> cursor.close()

True

>>> conn.close()

由于Python的DB-API定义都是通用的,所以,操作MySQL的数据库代码和SQLite类似。

小结

执行INSERT等操作后要调用commit()提交事务;

MySQL的SQL占位符是%s。

参考源码

使用mysql_使用MySQL相关推荐

  1. binlog流程 mysql_小米 MySQL 数据实时同步到大数据数仓的架构与实践

    背景MySQL由于自身简单.高效.可靠的特点,成为小米内部使用最广泛的数据库,但是当数据量达到千万/亿级别的时候,MySQL的相关操作会变的非常迟缓:如果这时还有实时BI展示的需求,对于mysql来说 ...

  2. 英文首字母排序mysql_利用MySQL数据库来处理中英文取首字母排序

    [package com.syz;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import ja ...

  3. 易语言组合框连接mysql_用mysql填充的多动态组合框

    数据库 $mySql = "SELECT field FROM fields"; $result = mysql_query($mySql);HTML: while($r = my ...

  4. unknown error mysql_解决MySQL执行SQL文件时报Error: Unknown storage engine 'InnoDB'的错误

    我运行了一个innoDB类型的sql文件,报了Error: Unknown storage engine 'InnoDB'错误,网上查了很多方法,但是都没办法真正解决我的问题,后来解决了,在这里总结一 ...

  5. proto文件导入mysql_导出mysql表结构生成grpc需要的proto文件工具

    使用过grpc的同学都知道,写proto文件比较繁琐,尤其是写message,对应很多字段,为此写了一个简单的从mysql直接读取表结构,生成proto文件的工具. 工具的使用很简单,需要简单的配置, ...

  6. mysqluc安装MYSQL_安装mysql几种方法

    一.在线安装(推荐) 1.配置仓库 [root@localhost ~]# vim /etc/yum.repos.d/mysql.repo 1 2.安装指定版本(提前配置好网络源) [root@loc ...

  7. cs6 数据库mysql_能mysql内容

    PHP同时操作多个MySQL连接 <?php $con_1 = mysql_connect('localhost','root','')or die("<font color=r ...

  8. 美团技术 mysql_美团MySQL数据库巡检系统的设计与应用

    巡检工作是保障系统平稳有效运行必不可少的一个环节,目的是能及时发现系统中存在的隐患.我们生活中也随处可见各种巡检,比如电力巡检.消防检查等,正是这些巡检工作,我们才能在稳定的环境下进行工作.生活.巡检 ...

  9. checkpoint技术mysql_认识MySQL中的Checkpoint技术

    1,checkpoint产生的背景 数据库在发生增删查改操作的时候,都是先在buffer pool中完成的,为了提高事物操作的效率,buffer pool中修改之后的数据,并没有立即写入到磁盘,这有可 ...

最新文章

  1. 对比.Net PetShop和Duwamish来探讨Ado.Net的数据库编程模式
  2. 网警信息安全!_只愿与一人十指紧扣_新浪博客
  3. C++数组参数应用方式探讨(转)
  4. docker 打包_Springboot2.0学习11 使用maven插件打包docker部署应用
  5. Hadoop框架:MapReduce基本原理和入门案例
  6. 演示:外部全局地址与外部局部地址的使用案例
  7. Windows平台JDK安装
  8. HEVC---xCompressCU()函数作用及位置
  9. 电视盒子线刷固件教程B860AV2.1-A-M-T版
  10. [css]画圆形标签
  11. 【产品经理】产品经理进阶之路(六):互联网思维详解
  12. CPAN | 配置阿里源
  13. 【修理】电脑维修 显卡错误(错误代码:43)
  14. java排他_排他文件锁实现(Java版本)
  15. 计算机网络——网络时延
  16. 安卓开发-最简单快速的仿微信聊天实现-附赠微信原生表情,QQ原生表情
  17. 新年快乐|202112-月度总结
  18. 2021-09-19OSPF接口网络类型实验
  19. 微信支持手机温度监控;苹果、谷歌和微软扩大对无密码登录的支持;可在浏览器中运行Python应用的框架发布 | EA周报...
  20. VCS®/VCSi™User Guide

热门文章

  1. 揭示生命的奥秘——生物信息学
  2. NAR:浙大陈云/马忠华团队揭示病原真菌组蛋白H3K27甲基化识别新机制
  3. Microbiome:浙大马忠华团队-生防细菌抑制病原真菌新机制
  4. MPB:甘肃省科学院祝英等-药用植物地下茎内生真菌的分离纯化及鉴定
  5. 研究生新生进入实验室后,如何成长?5点建议分享
  6. CEJ:西安理工赵亚乾组冠状病毒在水中传播特征、可能遏制策略与研究挑战
  7. mSystems:从铁载体窥根际菌群互作大局,可见一斑!
  8. SBB:石油污染土壤微生物群落构建与生物多样性研究
  9. pandas使用rename函数自定义重命名dataframe指定索引标签(位置)的名称(customize rename index value or label)
  10. Seaborn使用regplot函数可视化散点图并添加回归曲线以及回归线对应的置信区间(Scatter plot with regression line)