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

现在石家庄做网站的公司有哪几家软考哪个培训机构通过率高

现在石家庄做网站的公司有哪几家,软考哪个培训机构通过率高,android聊天功能开发,便宜网站建设 优帮云最近在一个使用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/107602/

相关文章:

  • 手机网站做多宽网站建设公司的发展规划
  • 营销型网站策划建设分为哪几个层次免费网站打包
  • 网站建设项目需求书建站快车优势
  • 12380网站建设情况报告wordpress与drupal
  • 深圳做网站公司有那些专业机械设计公司
  • 网站建设数据库代码网站建设 鼠标
  • 软件开发和网站开发哪个更好公交建设公司官网
  • 佛山行业网站设计公司晋州外贸网站建设
  • 咖啡网站模板html江苏建设电子信息网站
  • 如何做单位网站免费样机素材网站
  • 网站建设 策划方案书有没有教做化学药品的网站
  • ...温岭做网站湖南网站搜索排名优化电话
  • 网站建设套餐报搜索引擎的网站
  • 赣州网站推广公司抢注域名网站
  • 网站免费建站的方法网站开发中网页之间的链接形式
  • 温州网站建设网络网站优化和推广
  • 北京h5网站建设平台百度app官网下载安装
  • 网站建设公司新员工培训pptwordpress 有必要静态化
  • 网站建设与网页制作模拟试题wordpress5.0调用api接口
  • 门户网站域名不用登录的秒玩小游戏
  • 无锡网站排名优化购物网站 功能
  • 设计与绘制一个网站首页企业营销网站案例
  • 网站建设与 宣传关系网站建设免费免代码
  • 网站如何提升流量wordpress 摄影国内
  • 云南建站英文网站建设easy
  • 广陵区建设局网站百度alexa排名
  • 购物网站排名2017泗阳住房建设局网站
  • 河北电子商务网站建设建设公司网站 优帮云
  • 马鞍山网站建设 明达wordpress菜单消失
  • 深圳做网站的公司有哪些wordpress文件缓存