人工智能自动代码生成3---数据库获取代码实现1

我们先从最简单的自动代码生成场景开始,先用不怎么智能的方法来实现这些基本功能。我们在这一节中,将使用Java中的JDBC技术,实现对数据库内容的增删改查操作,同时使用PHP中的Mysqli技术,实现同样的功能,通过这个具体的实例,让大家感觉一下,实际中的代码生成,究竟可以实现什么功能。

我们在具体讲数据库获取代码生成之前,我们先来熟悉一下Jinja2的语法知识。我们以Jinja2应用的典型场景为例,来看一下,Jinja2怎样动态通过模板文件,生成标准的HTML文件,从而实现Web应用中的模板技术。

我们为了控制项目中用到的库文件,不与系统中的库文件冲突,我们先建立项目自己的虚拟环境。在anaconda下面,建立虚拟环境最方便的方法是使用conda命令,假设我们要建立的虚拟环境名称为cgai(Code Generation by Artificial Intelligence),则命令为:

conda create -n cgai

接下来,我们激活这个虚拟环境:activate cgai,如果我们要关闭这个虚拟环境,只需运行:deactivate cgai即可。激活了虚拟环境之后,在命令提示符前会有(cgai)提示。

我们先在根目录下建立exp目录,专门用于存放我们的实验性代码,截至目前为止,程序的目录结构应该为类似如下所示的结构:

我们先来写一个最简单的Jinja2测试程序exp/t001.py,如下所示:

import sys
sys.path.append(‘./libs/jinja‘)
from jinja2 import Template

template = Template(‘Hello {{ name }}‘)
rst = template.render(name=‘Yt‘)
print(rst)

然后我们来编写程序入口主文件app_main.py:

import exp.t001

运行程序:python app_main.py

则系统应该可以打印出昨天我们的例子中打印的内容。这就说明我们新的目录结构是正确的。

下面我们来看一个实际一点儿的例子,在这个例子中,我们要显示用户王三购物车中的内容,假设购物车中有一个产品列表,每个产品包括产品名称、数量和价格,我们想要在HTML页面上显示这个产品的列表。

如果使用Jinja2的话,我们第一步就是生成一个模板文件,如下所示:

<!doctype html>
<html lang="cn">
<head>
  <meta charset="UTF-8" />
  <title>{{ title }}</title>
  <meta name="description" content="{{ description }}" />
</head>
<body>
<div id="content">
  <p>欢迎{{ userName }}!您的购物车:</p>
  <ul>
  {% for item in items -%}
    <li>{{ item.name }}---{{ item.quantity }}---{{ item.price }}---{{ item.quantity * item.price }}</li>
  {% endfor -%}
  </ul>
</div>
</body>
</html>

下面我们在exp/t001.py中利用jinja2解析模板文件,生成正确的HTML文件,如下所示:

import sys
sys.path.append(‘./libs/jinja‘)
import codecs
from jinja2 import Template
import jinja2 as jinja2

#template = Template(‘Hello {{ name }}‘)
#rst = template.render(name=‘Yt‘)
#print(rst)

templateLoader = jinja2.FileSystemLoader( searchpath="d:/" )
templateEnv = jinja2.Environment( loader=templateLoader )

TEMPLATE_FILE = "d:/abiz/cgai/exp/p001.jt"
template = templateEnv.get_template( TEMPLATE_FILE )

items = [
    {"name": "笔记本电脑", "quantity": 1, "price": 5900.00},
    {"name": "iPhone7 plus", "quantity": 1, "price": 7900.00},
    {"name": "编程入门", "quantity": 3, "price": 59.00}
]

templateVars = { "title" : "我的购物车",
                 "description" : "中国最大电子商务平台,京东商城、天猫商城的终结者",
                 "userName" : "王三",
                 "items": items
               }

outputText = template.render( templateVars )

print(outputText)
outFile = codecs.open(‘d:/abiz/cgai/exp/p001.html‘, ‘w‘, ‘utf-8‘)
outFile.write(outputText)
outFile.close()

这段代码的结构还是比简单的,程序首先初始化Jinja2的环境,获取到模板文件。然后我们定义购物车内容为items,最后定义页面所用到的变量templateVars,最后调用jinja2来解析模板文件,对变量表达式、逻辑控制、循环结构等进行替换,生成正确的HTML文件。这里需要注意的一点是,我们在Windows下,文件的缺省编码为Ascii,所以我们在写文件时,需要显示的指定文件编码为utf-8。

运行程序:python app_main.py后,会得到p001.html文件,内容如下所示:

<!doctype html>
<html lang="cn">
<head>
  <meta charset="UTF-8" />
  <title>我的购物车</title>
  <meta name="description" content="中国最大电子商务平台,京东商城、天猫商城的终结者" />
</head>
<body>
<div id="content">
  <p>欢迎王三1!您的购物车:</p>
  <ul>
  <li>笔记本电脑---1---5900.0---5900.0</li>
  <li>iPhone7 plus---1---7900.0---7900.0</li>
  <li>编程入门---3---59.0---177.0</li>
  </ul>
</div>
</body>
</html>

通过这个简单的例子,我们可以看到,Jinja2代码生成的能力还是很强的,在下一节中,我们将带领大家利用这一技术,利用模板技术,自动生成数据库访问代码。

时间: 03-11

人工智能自动代码生成3---数据库获取代码实现1的相关文章

用simulink matlab 自动代码生成无刷电机的c代码

主控mcu :stm32f405Rg 编译器:keil5 MCU代码生成器: stm32cubemx ,f4 1.21.0 无刷电机 bldc 有霍尔 三步启动法. 用stateflow 图形化编程,非常方便就能实现自己的控制算法. pcb 是自己画 的驱动板子, stm32 主控,下一步工作是 优化控制算法,不知道有没有 对 bldc控制算法熟悉 simulinker,感兴趣的可以一起学习,板子还有剩余,不是商业用途,不卖板子哈. O(∩_∩)O哈哈~ 原文地址:https://www.cnb

自动生成对应数据库表的JPA代码工具

http://blog.csdn.net/zheng2008hua/article/details/6274659 关键词:JPA 数据库表代码自动生成,JPA代码生成 自动生成对应数据库表的JPA代码工具: 1.myEclipse 使用MyEclipse Persistence Tools; 2.eclipse 创建一个JPA Project工程后,右键工程选JPA Tools选项生成,有用到Data Source Explorer,参考http://blog.csdn.net/zheng20

php 获取mysql数据库信息代码

有时候我们需要知道mysql数据库中的一些情况,好在php提供了一些内置方法与函数,大家了解下了. 代码如下: <?php @mysql_connect("localhost", "root","1981427") //选择数据库之前需要先连接数据库服务器 or die("数据库服务器连接失败"); $dbs = mysql_list_dbs(); //调用mysql_list_dbs函数 while ($array =

easyui-datagrid通过action从数据库获取数据的关键代码

实际上是结合struts2来从数据获取json格式的数据. 关键代码: GetUserAction.java代码 package com.log.control; import java.io.IOException; import java.io.StringWriter; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apa

bboss自动代码生成工具使用指南

本文介绍bboss自动代码生成工具使用方法 工具在线浏览效果: http://gencode.bbossgroups.com 在介绍之前首先了解一下bboss自动代码生成工具能帮助我们做哪些事情. 通过自动代码生成框架,根据模板可以自动生成数据库表的增.删.改.分页查询.列表查询.国际化功能对应的java.jsp程序和配置文件,包括: 1.mvc控制器 2.业务组件 3.PO实体类 4.jsp文件 可以定制不同风格的界面模板,目前提供了一套bboss平台的基础ui风格和一套bboss普通ui风格

.net安装包自动安装Mysql数据库

原文:.net安装包自动安装Mysql数据库 在制作.Net安装包的时候,如果项目有用到数据库,怎么能够把数据库打包安装呢?网上已经有很多自动安装Sql Server数据库的例子,但是自动安装mysql的例子似乎不多.本文就介绍一下如何在.Net安装包中自动安装Mysql数据库. 最终我们要实现的效果是,部署.Net桌面应用程序时,能够一键自动安装应用程序以及附带的MySql数据库,并初始化数据库. 实现步骤如下: 1.准备一个干净的MySql安装包 mysql本身是开源的,安装完mysql数据

IdentityServer4-从数据库获取User登录并对Claims授权验证(五)

原文:IdentityServer4-从数据库获取User登录并对Claims授权验证(五) 本节将在第四节基础上介绍如何实现IdentityServer4从数据库获取User进行验证,并对Claim进行权限设置. 一.新建Web API资源服务,命名为ResourceAPI (1)新建API项目,用来进行user的身份验证服务. (2)配置端口为5001 安装Microsoft.EntityFrameworkCore包 安装Microsoft.EntityFrameworkCore.SqlSe

js实现的可以自动刷新的时间日期代码实例

js实现的可以自动刷新的时间日期代码实例:可以自动刷新的时间日期效果在很多网页都在使用,因为能够让页面更加动感一些,也更加人性化,用户可以实时查看页面的时间,下面就通过代码实例介绍一下如何实现此效果.代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.sof

MySQL数据库获取多个汉字拼音的首字母函数

需求简介:最近的一个项目,想实现如下图所示的显示效果.很明显,如果能够获取对应的汉字词组中每个汉字的拼音首字母就可以实现了,如果是固定的几组汉字,人为的拼一下就可以 了,不过项目中有多处功能需要这个效果,并且事先也不知道对应的汉字是什么,所以就需要一个函数来完成这件事情了,根据网上查询的资料自己改进了一个 函数实现的效果,现分享如下. 1:阅读建议      如果你还没有看过我上一篇博文——MySQL数据库获取汉字拼音的首字母函数,强烈建议请先看一下,因为本篇博文是在她的基础之上写的,相关雷同的