1. 使用MySQL
    2. 阅读: 153026
    3. MySQLWeb世界中使用最广泛的数据库服务器。SQLite的特点是轻量级、可嵌入,但不能承受高并发访问,适合桌面和移动应用。而MySQL是为服务器端设计的数据库,能承受高并发访问,同时占用的内存也远远大于SQLite
    4. 此外,MySQL内部有多种数据库引擎,最常用的引擎是支持数据库事务的InnoDB
    5. 安装MySQL
    6. 可以直接从MySQL官方网站下载最新的Community Server 5.6.x版本。MySQL是跨平台的,选择对应的平台下载安装文件,安装即可。
    7. 安装时,MySQL会提示输入root用户的口令,请务必记清楚。如果怕记不住,就把口令设置为password
    8. Windows上,安装时请选择UTF-8编码,以便正确地处理中文。
    9. MacLinux上,需要编辑MySQL的配置文件,把数据库默认的编码全部改为UTF-8MySQL的配置文件默认存放在/etc/my.cnf或者/etc/mysql/my.cnf
    10. [client]
    11. default-character-set = utf8
    12. [mysqld]
    13. default-storage-engine = INNODB
    14. character-set-server = utf8
    15. collation-server = utf8_general_ci
    16. 重启MySQL后,可以通过MySQL的客户端命令行检查编码:
    17. $ mysql -u root -p
    18. Enter password:
    19. Welcome to the MySQL monitor...
    20. ...
    21. mysql> show variables like '%char%';
    22. +--------------------------+--------------------------------------------------------+
    23. | Variable_name | Value |
    24. +--------------------------+--------------------------------------------------------+
    25. | character_set_client | utf8 |
    26. | character_set_connection | utf8 |
    27. | character_set_database | utf8 |
    28. | character_set_filesystem | binary |
    29. | character_set_results | utf8 |
    30. | character_set_server | utf8 |
    31. | character_set_system | utf8 |
    32. | character_sets_dir | /usr/local/mysql-5.1.65-osx10.6-x86_64/share/charsets/ |
    33. +--------------------------+--------------------------------------------------------+
    34. 8 rows in set (0.00 sec)
    35. 看到utf8字样就表示编码设置正确。
    36. 注:如果MySQL的版本≥5.5.3,可以把编码设置为utf8mb4utf8mb4utf8完全兼容,但它支持最新的Unicode标准,可以显示emoji字符。
    37. 安装MySQL驱动
    38. 由于MySQL服务器以独立的进程运行,并通过网络对外服务,所以,需要支持PythonMySQL驱动来连接到MySQL服务器。MySQL官方提供了mysql-connector-python驱动,但是安装的时候需要给pip命令加上参数--allow-external
    39. $ pip install mysql-connector-python --allow-external mysql-connector-python
    40. 如果上面的命令安装失败,可以试试另一个驱动:
    41. $ pip install mysql-connector
    42. 我们演示如何连接到MySQL服务器的test数据库:
    43. # 导入MySQL驱动:
    44. >>> import mysql.connector
    45. # 注意把password设为你的root口令:
    46. >>> conn = mysql.connector.connect(user='root', password='password', database='test')
    47. >>> cursor = conn.cursor()
    48. # 创建user表:
    49. >>> cursor.execute('create table user (id varchar(20) primary key, name varchar(20))')
    50. # 插入一行记录,注意MySQL的占位符是%s:
    51. >>> cursor.execute('insert into user (id, name) values (%s, %s)', ['1', 'Michael'])
    52. >>> cursor.rowcount
    53. 1
    54. # 提交事务:
    55. >>> conn.commit()
    56. >>> cursor.close()
    57. # 运行查询:
    58. >>> cursor = conn.cursor()
    59. >>> cursor.execute('select * from user where id = %s', ('1',))
    60. >>> values = cursor.fetchall()
    61. >>> values
    62. [('1', 'Michael')]
    63. # 关闭Cursor和Connection:
    64. >>> cursor.close()
    65. True
    66. >>> conn.close()
    67. 由于PythonDB-API定义都是通用的,所以,操作MySQL的数据库代码和SQLite类似。
    68. 小结
    69. 执行INSERT等操作后要调用commit()提交事务;
    70. MySQLSQL占位符是%s
    71. 参考源码
    72. do_mysql.py