sqlalchemy写好数据库类,在mysql创建表问题,大佬们
写了一个继承 declarative_base()的Base类,还有继承Base类的BaseModel类,同步数据库想让自动创建表,但是总是不能,问题出在哪里?
其中一个表model类如下:
打印出来的数据库命令信息如下
到底是那里的问题。。。
from sqlalchemy import create_engine, MetaData
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
engine = create_engine('mysql+pymysql://root:123456@localhost:3306/Spider', echo=True)
Base = declarative_base()
class BaseModel(Base):
__abstract__ = True
__metadata__ = MetaData(bind=engine)
__table_arhs__ = {
'mysql_engine': 'InnoDb',
'mysql_charset': 'utf8'
}
if __name__ == '__main__':
BaseModel.__metadata__.create_all()
其中一个表model类如下:
from sqlalchemy import Column
from sqlalchemy.dialects.mysql import INTEGER, VARCHAR
from common.db import BaseModel
class CityModel(BaseModel):
__tablename__ = 'city'
id = Column(INTEGER, primary_key=True)
name = Column(VARCHAR(64))
打印出来的数据库命令信息如下
2017-09-08 22:24:15,737 INFO sqlalchemy.engine.base.Engine SHOW VARIABLES LIKE 'sql_mode'
2017-09-08 22:24:15,737 INFO sqlalchemy.engine.base.Engine {}
2017-09-08 22:24:15,750 INFO sqlalchemy.engine.base.Engine SELECT DATABASE()
2017-09-08 22:24:15,750 INFO sqlalchemy.engine.base.Engine {}
2017-09-08 22:24:15,751 INFO sqlalchemy.engine.base.Engine show collation where `Charset` = 'utf8' and `Collation` = 'utf8_bin'
2017-09-08 22:24:15,752 INFO sqlalchemy.engine.base.Engine {}
2017-09-08 22:24:15,753 INFO sqlalchemy.engine.base.Engine SELECT CAST('test plain returns' AS CHAR(60)) AS anon_1
2017-09-08 22:24:15,754 INFO sqlalchemy.engine.base.Engine {}
2017-09-08 22:24:15,754 INFO sqlalchemy.engine.base.Engine SELECT CAST('test unicode returns' AS CHAR(60)) AS anon_1
2017-09-08 22:24:15,754 INFO sqlalchemy.engine.base.Engine {}
2017-09-08 22:24:15,755 INFO sqlalchemy.engine.base.Engine SELECT CAST('test collated returns' AS CHAR CHARACTER SET utf8) COLLATE utf8_bin AS anon_1
2017-09-08 22:24:15,755 INFO sqlalchemy.engine.base.Engine {}
到底是那里的问题。。。
...全文
相关推荐
Python Flask写的绿色植物商城(购物)网站
在Flask-SQLAlchemy中,你可以定义类来表示数据库表,类的属性对应表的列。
python之sqlalchemy创建表的实例详解
在这个实例中,我们将详细探讨如何使用SQLAlchemy来创建数据库表。首先,我们需要导入所需的模块。
flask框架配置mysql数据库操作详解
数据库建立了连接,并创建了一个名为`db`的SQLAlchemy实例,可以用来操作数据库。
基于SQLAlchemy实现操作MySQL并执行原生sql语句
每个类代表数据库中的一个表,类中的属性对应表中的列。
python使用SQLAlchemy操作MySQL
在 SQLAlchemy 中,我们通常会定义一个基类 `Base` 以及一系列与数据库表对应的 Python 类。例如,创建一个名为 `Users` 的类,其属性对应数据库表 `users` 的列。


