如何在 Python 中连接到 MySQL 数据库?

新手上路,请多包涵

如何使用 python 程序连接到 MySQL 数据库?

原文由 Marc Lincoln 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 179
1 个回答

三步用Python 2连接MYSQL

1 - 设置

在执行任何操作之前,您必须安装 MySQL 驱动程序。与 PHP 不同,Python 默认仅安装 SQLite 驱动程序。最常用的包是 MySQLdb ,但很难使用 easy_install 来安装它。请注意 MySQLdb 仅支持 Python 2。

对于 Windows 用户,您可以获得 MySQLdb 的 exe

对于 Linux,这是一个临时包 (python-mysqldb)。 (您可以使用 sudo apt-get install python-mysqldb (对于基于 debian 的发行版), yum install MySQL-python (对于基于 rpm 的),或 dnf install python-mysql (对于基于 rpm 的发行版)到现代 distro-下载。)

对于 Mac,您可以 使用 Macport 安装 MySQLdb

2 - 用法

安装后,重启。这不是强制性的,但如果出现问题,它将阻止我在这篇文章中回答 3 或 4 个其他问题。所以请重启。

然后就像使用任何其他包一样:

 #!/usr/bin/python
import MySQLdb

db = MySQLdb.connect(host="localhost",    # your host, usually localhost
                     user="john",         # your username
                     passwd="megajonhy",  # your password
                     db="jonhydb")        # name of the data base

# you must create a Cursor object. It will let
#  you execute all the queries you need
cur = db.cursor()

# Use all the SQL you like
cur.execute("SELECT * FROM YOUR_TABLE_NAME")

# print all the first cell of all the rows
for row in cur.fetchall():
    print row[0]

db.close()

当然,有成千上万的可能性和选择;这是一个非常基本的例子。您将不得不查看文档。 一个好的起点

3 - 更高级的用法

一旦您知道它是如何工作的,您可能希望使用 ORM 来避免手动编写 SQL 和操作您的表,因为它们是 Python 对象。 Python 社区中最著名的 ORM 是 SQLAlchemy

我强烈建议您使用它:您的生活将会轻松得多。

我最近发现了 Python 世界中的另一颗宝石: peewee 。这是一个非常精简的 ORM,非常容易快速地设置然后使用。它让我的一天适合小型项目或独立应用程序,而使用像 SQLAlchemy 或 Django 这样的大型工具是多余的:

 import peewee
from peewee import *

db = MySQLDatabase('jonhydb', user='john', passwd='megajonhy')

class Book(peewee.Model):
    author = peewee.CharField()
    title = peewee.TextField()

    class Meta:
        database = db

Book.create_table()
book = Book(author="me", title='Peewee is cool')
book.save()
for book in Book.filter(author="me"):
    print book.title

这个例子开箱即用。除了拥有 peewee ( pip install peewee ) 之外别无其他。

原文由 e-satis 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏