首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨数据库SQLAlchemy应用程序的通用文本/CLOB数据类型

问跨数据库SQLAlchemy应用程序的通用文本/CLOB数据类型
EN

Stack Overflow用户
提问于 2013-12-04 14:48:35
回答 2查看 2.6K关注 0票数 3

我正在开发Python应用程序,它在开发环境中使用MySQL作为数据库后端,在生产环境中使用Oracle11g。是否有一种特定的方法来统一SQLAlchemy文本字段,以便它们同时在MySQL和Oracle数据库上工作?对于模型中的Oracle后端,我使用sqlalchemy.CLOB和MySQL sqlalchemy.TEXT。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-08 12:22:38

根据#sqlalchemy上的@agronholm,人们应该使用通用的SQLAlchemy类型Text ( TEXT是专门化的):

可变大小的字符串类型。 在SQL中,通常对应于CLOB或文本。还可以使用Python对象并以bind (以及结果集的反向编码)对数据库的编码进行编码。一般来说,TEXT对象没有长度;虽然有些数据库将在这里接受length参数,但其他数据库将拒绝它。

票数 5
EN

Stack Overflow用户

发布于 2016-04-08 18:21:54

我认为使用这个正式的文档技巧应该能做到这一点:反式编译。在本例中,我将CLOB保持为原始的,因为它在生产中使用,并将应用于mysql的编译。

代码语言:javascript
复制
from sqlalchemy.ext.compiler import compiles
from sqlalchemy.types import CLOB

@compiles(CLOB, "mysql")
def compile_binary_mysql(type_, compiler, **kw):
    return "TEXT"
    # @note: this will handle other parameter such as `length`
    # return compiler.visit_TEXT(type_, **kw)

请注意,强烈建议在生产/测试/开发中使用相同的RDBMS,以避免这些问题和其他问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20378389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档