Python操作MySQL:pymysql和SQLAlchemy

作者: admin 分类: Flask 发布时间: 2019-04-18 16:51

安装

pipenv install pymysql
pipenv install flask-sqlalchemy
pipenv install sqlacodegen

连接

SQLAlchemy本身无法操作数据库,其必须以来pymsql等第三方插件,Dialect用于和数据API进行交流,根据配置文件的不同调用不同的数据库API,从而实现对数据库的操作,如:

MySQL-Python
    mysql+mysqldb://<user>:<password>@<host>[:<port>]/<dbname>

pymysql
    mysql+pymysql://<username>:<password>@<host>/<dbname>[?<options>]

MySQL-Connector
    mysql+mysqlconnector://<user>:<password>@<host>[:<port>]/<dbname>

cx_Oracle
    oracle+cx_oracle://user:pass@host:port/dbname[?key=value&key=value...]

目前主流选择使用pymysql,因为pymysql支持python2python3.5以上的版本

sqlacodegen工具

sqlalchemy数据库到模型转换神器

安装

pip install sqlacodegen

https://pypi.org/project/sqlacodegen/#description

示例一、导出整个数据库

# 账号:root
# 密码:guess
# 数据库服务器地址:192.168.1.250
# 数据库端口:3306
# 数据库名:test
sqlacodegen --outfile=models.py mysql://root:guess@192.168.1.250:3306/test

示例二、导出某些表

# 账号:root
# 密码:guess
# 数据库服务器地址:192.168.1.250
# 数据库端口:3306
# 数据库名:test
# 要导出的表:teacher、student
sqlacodegen --outfile=models.py mysql://root:guess@192.168.1.250:3306/test --tables teacher,student

导出结果示例

# coding: utf-8

from sqlalchemy import Column, Date, DateTime, String, Text, text
from sqlalchemy.dialects.mysql import BIGINT, INTEGER, TINYINT
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()
metadata = Base.metadata

class HmUserHealthy(Base):
    __tablename__ = 'user'

    id = Column(BIGINT(20), primary_key=True)
    userId = Column(BIGINT(20))

参考

Python 3 下使用 Flask-SQLAlchemy + MySQL
sqlacodegen 2.0.1
python ORM框架:SqlAlchemy

发表评论

电子邮件地址不会被公开。 必填项已用*标注