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

电子商务如何做网站销售南充手机网站建设

电子商务如何做网站销售,南充手机网站建设,wordpress建站论坛,开公司流程及费用2022最新最近在一个使用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.yayakq.cn/news/8280/

相关文章:

  • 济南网站建设公司有哪些谈谈网站建设的主要内容
  • 企业网站建设实训体会wordpress好还是discuz
  • 墓园网站建设价格分销平台门店端
  • 网站安全架构校园网站建设的意见
  • 建设网站应该加什么服务国际贸易网站排名
  • 12360官方网站下载互联网营销主要学什么
  • 网站怎么做图片动态图片不显示传媒公司业务范围介绍
  • 南宁企业自助建站系统网上购物商城首页
  • 企业网站制作机构排名临夏网站建设
  • 深圳网站建设ucreatorproxy网站
  • 全面的网站制作wordpress配置邮箱
  • 怎么给网站做301陕西煤化建设集团网站
  • 小白怎么做网站搬家教程影视投资销售怎么找客户
  • 怎么查询网站是什么时候做的o2o商业模式
  • 网站建设+公司wordpress 默认自带插件
  • 网站建设网站结构图网站建设中可能遇到的问题
  • 帮人做网站一定要先收费定远建设局网站
  • 网站框架设计清水模板
  • 国内权重网站排名福建省建设厅网站首页
  • 网站ui怎么做的东莞网站策划
  • 现在什么视频网站做的最好微网站的优点
  • 哪些门户网站可以做推广做网站开发怎么接单
  • 东莞企网站建设国家高新技术企业查询网站
  • 电子类网站建设需要多少钱网站开发流程 百度文库
  • 重庆有哪些建设公司wordpress 访问优化
  • 邵阳 网站开发 招聘宝塔自助建站系统源码
  • 南约社区网站建设微信借口的网站怎么做
  • 什么网站可以做自媒体做外贸需要用什么网站
  • 网站建设怎么记账中山网站建设方案
  • 建设网站有哪些好处和坏处企业危机公关