当前位置: 首页 > news >正文

怎么修改网站模板360广告联盟平台

怎么修改网站模板,360广告联盟平台,17网一起做网站,做兼职的网站贴吧最近在一个使用fastapitortoise-orm的项目中,需要将orm的语句编译成特定数据库方言,但是查询了官方文档及一些资料却找不到合适的方法论😔,于是乎我就把目光放到了sqlalchemy身上,东找西找给我找着了。话不多说&#x…

最近在一个使用fastapi+tortoise-orm的项目中,需要将orm的语句编译成特定数据库方言,但是查询了官方文档及一些资料却找不到合适的方法论😔,于是乎我就把目光放到了sqlalchemy身上,东找西找给我找着了。话不多说,请看代码。

方法1:

import sqlalchemy.dialects.mysql
from sqlalchemy import Integer, String, Column
from sqlalchemy.orm import declarative_base
from sqlalchemy.sql import insertBase = declarative_base()class Student(Base):__tablename__ = 'student'id = Column(Integer, primary_key=True, index=True)name = Column(String, index=True, comment="名称")age = Column(Integer, index=True, comment="年龄")def generate_sql(instance):stmt = insert(instance.__class__).values({c.name: getattr(instance, c.name) for c in instance.__table__.columns})return stmt.compile(dialect=sqlalchemy.dialects.mysql.dialect(), compile_kwargs={"literal_binds": True})
ikun = Student(id=1, name="ikun", age=30)
jay = Student(id=1, name="jay", age=26)
print(generate_sql(ikun)) # INSERT INTO student (id, name, age) VALUES (1, 'ikun', 30)
print(generate_sql(jay))  # INSERT INTO student (id, name, age) VALUES (1, 'jay', 26)

上面代码通过insert() 创建一个 INSERT 语句对象,然后获取模型实例的对应列的值,使用stmt.compile编译成mysql的方言。但是这个方法对于json类型的字段会编译失败,出现

sqlalchemy.exc.CompileError: No literal value renderer is available for literal value "['唱跳', 'rap', '篮球']" with datatype JSON

的错误提示。

因此,介绍下一个方法。

方法2:

import sqlalchemy.dialects.mysql
from sqlalchemy import Integer, String, Column, JSON, text
from sqlalchemy.orm import declarative_base
from sqlalchemy.sql.compiler import SQLCompilerBase = declarative_base()class Student(Base):__tablename__ = 'student'id = Column(Integer, primary_key=True, index=True)name = Column(String, index=True, comment="名称")age = Column(Integer, index=True, comment="年龄")hobby = Column(JSON, comment="爱好")def generate_sql(instance: Student) -> SQLCompiler:columnsmap = {c.name: getattr(instance, c.name) for c in instance.__table__.columns}columns = columnsmap.keys()stmt = text(f"INSERT INTO {instance.__tablename__} ({', '.join(columns)}) VALUES ({', '.join([f":{c}" for c in columns])});").bindparams(**columnsmap)return stmt.compile(dialect=sqlalchemy.dialects.mysql.dialect(), compile_kwargs={"literal_binds": True})

输出:

ikun = Student(id=1, name="ikun", age=30, hobby=json.dumps(["唱跳", "rap", "篮球"]))
jay = Student(id=1, name="jay", age=26, hobby=json.dumps(["唱歌", "足球"]))
print(generate_sql(ikun)) # INSERT INTO student (id, name, age, hobby) VALUES (1, 'ikun', 30, '["\\u5531\\u8df3", "rap", "\\u7bee\\u7403"]');
print(generate_sql(jay)) # INSERT INTO student (id, name, age, hobby) VALUES (1, 'jay', 26, '["\\u5531\\u6b4c", "\\u8db3\\u7403"]');

如果text() 创建原始SQL文本语句,使用参数占位符 :name, :age, :hobby,bindparams() 将实际值绑定到SQL语句中的占位符,dialect=sqlalchemy.dialects.mysql.dialect() 指定使用MySQL方言。使用这种生成也不需要考虑特殊字符转义的问题。

http://www.ds6.com.cn/news/91081.html

相关文章:

  • 阜宁做网站的公司网络推广策划书
  • 玉林专业网站建设网络推广平台哪家公司最好
  • 网站建设胶州家园北京建站
  • 做磨毛布内销哪个网站比较好竞价排名是什么
  • 做网站的自我介绍东莞做网站的联系电话
  • 免费云空间seo搜索优化工程师招聘
  • 佛山网页网站制作seo搜索优化专员
  • 荣成网站开发交换友链是什么意思
  • 企业做不做网站的坏处360关键词排名推广
  • wordpress标签使用方法网站seo优化免费
  • 济南wordpress 建站seo快排优化
  • 校园二手网站建设目的意义怎么建网站教程图解
  • 网站建设哪家便宜整站优化要多少钱
  • 深泽网站建设免费发布推广信息的软件
  • 网站建设设计总结网络营销公司排名
  • 做网站的怎么学活动推广方案策划
  • 青岛网站制作案例如何免费自己创建网站
  • 做网站的空间是什么高端网站建设公司哪家好
  • 人网站设计与制作百度推广管家
  • 公司网站有时登不进 服务器网站建设需求模板
  • 国内网站做国外服务器深圳做网站的公司
  • 淘宝的好券网站怎么做云南今日头条新闻
  • 专门做网站开发的公司小说推文推广平台
  • 网站做支付功能友链交换
  • 用wordpress建立学校网站百度seo关键词排名优化教程
  • DW做旅游网站模板宠物美容师宠物美容培训学校
  • 杭州做网站五seo变现培训
  • 购物小网站建设seo和sem推广
  • 路由器可以做网站服务器吗网络营销有哪些主要功能
  • 济南建站软件如何在百度上发广告