在Web应用程序中使用MariadB和MySQL
#网络开发人员 #mysql #vely #mariadb

Mariadb和Mysql

Mariadb和MySQL是流行的开源数据库,鉴于它们的共同根源,它们具有丰富的功能和语法。近年来,它们之间的差异一直在增长,尽管在大多数情况下它们仍然可以互换。本文将涵盖Mariadb,因为它几乎所有Linux发行版都包含在内。但是,它也应该适用于mySQL。

连接到数据库

有多种连接到MariadB/MySQL的方法,但是最快的连接方法是通过本机C库。选择如何访问Mariadb/MySQL时,有几个方面要考虑(而不仅仅是这些):

  • 您是否仅使用本机库进行连接,因为它们比在访问访问的速度放慢速度上的抽象层的速度要快?
  • 数据库连接是否持续?表示客户端连接在查询之间是否保持打开状态,或者每次访问数据库需要连接和断开连接?
  • 准备好的陈述吗?在许多情况下,准备好的语句加快了SQL访问速度,因为服务器并非每次都不会解析SQL语句。

选择数据库访问框架时,请尝试找出是否至少对这些问题获得一些积极的答案。在这里,我将使用Vely,在上面的所有三个计数上,答案为是。

先决条件

首先,install MariaDB。我还将使用Apache用作Web服务器来从Web浏览器访问数据库,因此,install Apache也是 - 如果尚未设置,您可能需要为其配置防火墙以允许HTTP流量(请参阅ufw,请参阅ufwfirewall-cmd等)。最后,install Vely将是位于Web服务器和数据库之间的应用程序服务器。

您也可以安装mysql,所有步骤都应该相同。

设置数据库

登录为root至mysql实用程序并执行以下操作:

create database if not exists db_people;
create user if not exists vely identified by 'your_password';
grant create,alter,drop,select,insert,delete,update on db_people.* to vely;
use db_people;
create table if not exists people_list (first_name varchar(30), last_name varchar(40));
exit

在这里,您将创建数据库db_people和用户。您可以随心所欲地更改他们的名字,但请记住在这里到处更改它们。然后,您将为用户提供基本数据库的权限,并能够创建对象,数据等。

最后,在此数据库中创建了Table_list',这是一个非常简单的名字和姓氏。这就是数据库设置。

访问数据库

为了访问您的数据库(实际上任何数据库),您将需要一个database_config_file。该文件只是指定访问数据库的方法,用户名和密码等内容。为此,创建一个数据库配置文件。您可以将任何内容调用任何内容,但请记住,它的名称在代码中使用以引用数据库,因此,如果更改它,也可以在下面的代码中更改它。创建文件:

[client]
user=vely
password=your_password
database=db_people
protocol=TCP
host=127.0.0.1
port=3306

这实际上是本机Mariadb客户端配置文件,因此学习其格式也可以帮助您在其他地方。 [客户端]部分表示这是客户需要连接的信息。接下来,您指定Mariadb用户名(这是我们上面创建的用户),然后是密码(您可以拥有自己的your_passwordâ),数据库名称是db_people再次,这是我们已经创建的数据库。

剩下的几乎是与盒子中联系数据库的默认方法将在Localhost上的TCP端口3306上收听。如果您更改了任何一个,那么您也必须在这里更改它。现在您的代码可以评估数据库。

代码

创建file-list_people.velyâ,然后将其复制到它:

#include "vely.h"

void list_people() {
    out-header default
    @List of people:<hr/>
    run-query @people = "select first_name, last_name from people_list" output define f_name, l_name
        @First name <<p-out f_name>>, last name <<p-out l_name>><br/>
    end-query
}

这将运行一个查询,列出了每个人的第一个和姓氏。查询将使用您之前创建的配置文件(请注意@people)。并且输出列将转到名为f_name的字符串变量(即char *)和l_nameââââââââââ–这些变量是在现场创建的用run-query声明的定义子句。您还可以通过使用上述代码中的“ run pregred-Query”语句而不是run-Query-使用准备的SQL语句。

和@@output_statement将数据发送到标准输出,如果这将是命令行程序,则可以是实际的stdout流,或者在浏览器中,是一个Web应用程序。好的事情是,这对两者都相同。 p-out语句输出一个字符串,当将其放置在<<和>>之间时,它被嵌入到输出语句中。

创建并制作应用程序

当您开始使用Vely应用程序时,必须先使用vf程序经理来创建它:

sudo vf -i -u $(whoami) people_app

- 我说的是创建一个应用程序。 - u选项说,哪个用户将拥有它,在这种情况下,它是$(whoami),这是当前登录用户的linix语言。最后,应用程序名称是people_app。

要制作您的应用程序,请使用vv工具:

vv -q --db='mariadb:people'

这将收集当前目录中的所有.Vely文件(在这种情况下只有一个),将所有Vely语句(如run-Query)处理到C代码中,然后将其编译并将其链接到本机应用程序中。请注意'db ='玛利亚德伯:people'''''''''''''''''''''''''''''数据库供应商是Mariadb或MySQL。您可以拥有任何数量的数据库和任何数量的受支持供应商。

将在â/var/lib/vv/bld/people_app -directory中生产两个可执行文件。请注意people_app子目录与上面创建的应用程序名称匹配。该目录就像用于您的应用程序的划痕,这是所有生成的代码所处的位置。创建的一个可执行文件将是您可以从命令行运行的People_App。另一个是people_app.fcgiâ,您可以作为FastCGI应用程序服务器(即Web应用程序)运行。您将在本文中使用两者。

放入一些数据

要开始,您将需要一些数据来查询。为此,首先插入一些数据。使用先前创建的用户凭据登录到数据库(如果更改密码,请更改your_password):

mysql -u vely -pyour_password

然后执行此SQL:

use db_people;
insert into people_list (first_name, last_name) values ("Timothy", "McMillan"), ("Tina", "Clark");
commit;
exit;

现在您的数据库中有两个人,蒂莫西和蒂娜。

从指令行跑

执行您的程序:

export REQUEST_METHOD=GET
export SCRIPT_NAME="/people_app"
export PATH_INFO="/list_people"
export VV_SILENT_HEADER="yes"
/var/lib/vv/bld/people_app/people_app

您会得到:

List of people:<hr/>
First name Timothy, last name McMillan<br/>
First name Tina, last name Clark<br/>

Vely都是关于标准HTTP请求的。因此,即使您运行命令行程序,也可以通过接收HTTP请求来实现。这就是为什么要有请求方法(获取),脚本名称(这是通往应用程序名称的途径 - people_app)和路径信息(这是请求处理程序的途径list_peopleâ,即您上面的代码)。这使得为​​命令行和网络执行构建程序非常容易,因为它们是相同的。您不需要编写两个代码库,只需要一次调试一次。另外,您几乎可以在Web上可以在命令行上执行任何操作,因此您甚至可以在没有Web服务器设置的情况下编写程序。

请注意vv_silent_header环境变量抑制HTTP标头输出。如果它不在那儿,您会得到HTTP标头,与浏览器相同。我们接下来会这样做。

设置apache用于Web访问

在本文中,您将使用Apache Web服务器。 Apache具有FASTCGI的支持,就像大多数(如果不是全部)主要的Web服务器一样。 Apache非常模块化,因此必须启用此支持(像许多功能一样)。为此,请按照instructions to setup Apache for Vely访问。请注意,在步骤3中,且都是People_app(即与应用程序名称相同),因此ProxyPass将是这样的:

ProxyPass "/people_app" unix:///var/lib/vv/people_app/sock/sock|fcgi://localhost/people_app

proxypassâ指令告诉Apache,您的people_app应用程序将提供任何以â/people_app开头的URL路径。它如何做?请注意上面的路径â/var/lib/vv/people_app/sock/sock'这是Vely创建的Unix套接字文件,以允许其他软件(如Apache)与您的交流应用。这是一种超快速的通信模式,通常由在同一主机上运行的应用程序使用,因为Linux内核直接支持。

启动您的应用程序服务器

要从浏览器运行,请先启动您的应用程序服务器:

vf -w 2 people_app

这将启动2个守护程序进程以服务请求。这些请求来自浏览器(或其他服务器),通过Apache Web服务器传递到您的Vely应用程序,然后返回。您有很多选择vf程序管理器可以有效地运行服务器。

从浏览器运行

将此URL复制到您的浏览器(假设您的服务器在您自己的本地计算机上;如果没有,请用您的网址替换127.0.0.1):

http://127.0.0.1/people_app/list_people

从命令行运行时,您应该得到与上述完全相同的响应,如:

List data from mariadb

结论

连接到Mariadb/mysql并不困难。本文解释了如何以一种简单的方式进行操作,以便您可以根据自己的需求自定义量身定制。

封面图像版权(C)Sergio Mijatovic 2023