人工智能自动代码生成3---数据库获取代码实现1
来源:互联网 发布:mac打字左下角 编辑:程序博客网 时间:2024/05/17 19:58
我们先从最简单的自动代码生成场景开始,先用不怎么智能的方法来实现这些基本功能。我们在这一节中,将使用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 syssys.path.append('./libs/jinja')from jinja2 import Templatetemplate = 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 syssys.path.append('./libs/jinja')import codecsfrom jinja2 import Templateimport 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代码生成的能力还是很强的,在下一节中,我们将带领大家利用这一技术,利用模板技术,自动生成数据库访问代码。
- 人工智能自动代码生成3---数据库获取代码实现1
- 人工智能自动代码生成1---前言
- 人工智能自动代码生成2---环境搭建
- java自动生成数据库代码
- C#自动数据库代码生成的思路
- SQL 数据库生成自动编号代码
- 用java代码自动生成数据库表
- 自动生成与数据库交互代码
- GreenDao自动生成Android数据库操作代码
- 根据数据库自动生成java代码
- [C#]一步一步开发自己的自动代码生成工具之一:获取SQL2005的数据库表结构
- [c#]一步一步开发自己的自动代码生成工具之一:获取sql2005的数据库表结构
- dotnet代码自动生成机的实现
- dotnet代码自动生成机的实现
- dotnet代码自动生成机的实现
- dotnet代码自动生成机的实现
- AOS 自动生成代码功能实现
- SpringBoot下实现mybatis代码自动生成
- InputStream与OutputStream的使用例子
- [拉格朗日插值法]拉格朗日插值法小结
- AngularJS的核心机制--脏检查
- 关于oracle连“System.Data.OracleClient需要Oracle客户端软件8.1.7或更高版本”
- Android中如何给layout资源文件分类 在layout下创建子文件夹
- 人工智能自动代码生成3---数据库获取代码实现1
- L1-030. 一帮一
- 深度学习 LSTM
- mysql常用操作
- GOMOBILE写Android和iOS移动端SDK
- 基于DragonBoard 410c的遥控炮台五之远程交互(下)
- 360笔试题
- Day_two--->java数据类型的转换
- Phpcms 详情页显示所属栏目的同级栏目