使用 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 并查询的主要内容,如果未能解决你的问题,请参考以下文章

无法使用java连接到mysql数据库[重复]

无法使用 PHP 页面连接到 MySQL

ODBC 连接到 MySQL 数据库有啥影响

使用 PHP OOP 概念连接到 MySQL 数据库

使用 JDBC 连接到 MySQL 数据库

无法连接到本地 MySQL 服务器并丢失了 root 密码