使用 sqlalchemy 连接到 mysql 并查询

Posted

技术标签:

【中文标题】使用 sqlalchemy 连接到 mysql 并查询【英文标题】:Connect to mysql with sqlalchemy and query 【发布时间】:2017-04-18 00:54:55 【问题描述】:

我有一个包含股票市场报价的 mysql 数据库。我正在尝试创建一个 python 脚本来连接到数据库并对其进行查询。这是我的python脚本...

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:password@localhost:8889/database_name'
db = SQLAlchemy(app)


class Stocks(db.Model):
    __tablename__ = 'stocks'
    stock_id = db.Column('stock_id', db.Integer, primary_key=True)
    adj_close = db.Column('adj_close', db.Float)
    close = db.Column('close', db.Float)
    date = db.Column('date', db.Date)
    high = db.Column('high', db.Float)
    low = db.Column('low', db.Float)
    open = db.Column('open', db.Float)
    symbol = db.Column('symbol', db.String(10))
    volume = db.Column('volume ', db.Float)

我正在尝试使用 python 控制台使用以下命令查询数据库...

>>>from file.py import Stocks
>>>data = Stocks.query.all()

我收到以下错误...

ImportError: No module named MySQLdb

我正在运行 python 2.7.12

如果我使用 python 3.5.2 运行此代码,我会收到以下错误...

ImportError: No module named 'MySQLdb'

如果我尝试安装 MySQLdb 我会得到以下...

Could not find a version that satisfies the requirement MySQLdb (from versions: )
No matching distribution found for MySQLdb

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

使用“mysql://...”连接字符串,SQLAlchemy 将默认使用 MySQL-python 进行连接,因此您需要使用 pip 安装该软件包。

pip install MySQL-python

或者,您可以使用其他库进行连接,例如 PyMySQL(MySQL-python 不再积极开发)。只需更改您的连接字符串:

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:password@localhost:8889/database_name'

安装 PyMySQL:

pip install PyMySQL

【讨论】:

以上是关于使用 sqlalchemy 连接到 mysql 并查询的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Windows 机器上使用 sqlalchemy 连接到本地 mysql 数据库

在 Python 3.6 中无法通过 SQLAlchemy 连接到 mySQL

Python Flask SQLAlchemy 容器无法连接到 MySQL 容器

无法通过 Python Elastic Beanstalk 中的 Flask SQLAlchemy URI 连接到 AWS MySQL RDS 实例

使用 SQLAlchemy 连接到 Oracle 数据库

使用 sqlalchemy 连接到 mssql 数据库时遇到问题