Python 将表格的数据类型转换为Alchemy中的MEDIUMTEXT或LONGTEXT MySQL文本类型的大小为64KB

Python 将表格的数据类型转换为Alchemy中的MEDIUMTEXT或LONGTEXT MySQL文本类型的大小为64KB,python,mysql,sqlalchemy,pymysql,Python,Mysql,Sqlalchemy,Pymysql,如果我想创建一个更大的文本表,比如MEDIUMTEXT或LONGTEXT 我已经用String('big number')尝试过这个方法,比如String(1000000),它只对SQLAlchemy有效,而不是在Flask SQLAlchemy中 那么,高射炮的问题在于炼金术吗?还是出了什么事 使用前 例如: from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() class Post(db.Model): title =

如果我想创建一个更大的文本表,比如MEDIUMTEXT或LONGTEXT

我已经用String('big number')尝试过这个方法,比如String(1000000),它只对SQLAlchemy有效,而不是在Flask SQLAlchemy

那么,高射炮的问题在于炼金术吗?还是出了什么事

使用前 例如:

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class Post(db.Model):
    title = db.Column(db.String(60))
    body = db.Column(db.Text())
当前使用和它的工作! Text()中的较大数字将自动在MySQL中创建一个大文本数据类型。10000000将转换为longtext。

我尝试了以下测试:

t2 = Table('t2', metadata,
      Column('id', Integer, primary_key=True),
      Column('t1', String(64000)),
      Column('t2', String(16000000)),
      Column('t3', String(4294000000)),
      Column('t4', Text)
     )

metadata.create_all(engine)
然后我检查了一下它在MySQL数据库中最终创建了什么:

mysql> show create table t2;
CREATE TABLE `t2` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `t1` mediumtext,
  `t2` longtext,
  `t3` longtext,
  `t4` text,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
因此,它确实将SQLAlchemy的通用字符串数据类型映射到或多或少合适的MySQL数据类型

(以上是从2017年我的答案复制到的。从那时起我就没有做过这个测试。)

我尝试使用文本(10000000)来转换它。幸运的是,它起作用了

我查找我的MySQL,它运行良好,在
pymysql

mysql> SELECT DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name='post' and COLUMN_NAME = 'body';
+-----------+
| DATA_TYPE |
+-----------+
| text      |
| longtext  |
+-----------+

那么,我的问题完成了

谢谢!我知道这对炼金术有效。但我使用的是Flask SQLAlchemy,我不知道在CentOS服务器上通过Flask SQLAlchemy和pymysql来实现这个效果。也许问题出在pymysql上。因为我在本地测试中没有错误。好吧,我没有意识到Flask SQLAlchemy是一个不同的实现。无论如何,上面的答案至少是一个测试用例。祝你好运非常感谢。你给了我一个想法,让我多想想。64000>64KB,因此它将是mediumtext。我认为Alchemy不支持这种转换方式。我尝试使用文本(100000)或更大的数字,它可以工作!
mysql> SELECT DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name='post' and COLUMN_NAME = 'body';
+-----------+
| DATA_TYPE |
+-----------+
| text      |
| longtext  |
+-----------+