文章目录

  • python,java,go,perl,php,c等驱动连接数据库
    • 1.测试环境
    • 2.python
      • 2.1安装
      • 2.2完整代码
    • 3.java
      • 3.1 安装
      • 3.2代码
    • 4.go
      • 4.1 安装
      • 4.2 代码
    • 5.c语言
      • 上代码
    • 6.php
      • 6.1 安装
      • 6.2 上代码
    • 7. perl
    • 7.1 安装
      • 上代码

python,java,go,perl,php,c等驱动连接数据库

最近接到一个需求,使用python,java,go,perl,php,c等语言连接数据库,并做一些相应的SQL动作.
唉,开搞了!

1.测试环境

环境 描述
系统环境 ubuntu20.04
数据库 mysql8.0.25
python 3.9.5
java 16.0.2
go 16.2
gcc 9.3.0
perl v5.30.0
php 7.4

2.python

2.1安装

参考:https://www.python.org/downloads/

直接|下载

安装:

xz -d Python-3.8.11.tar.xz
tar xf Python-3.8.11.tar
cd Python-3.8.11
./configure
make && make install
  • 在运行程序前,检查自己系统是否已经安装以下软件!
yum install pip \
pip3 install mysql-connector \
pip3 install pymysql \
pip3 install --upgrade pip \
pip install  cryptography \
pip3 install DBUtils==1.3 \

2.2完整代码

import pymysql
from DBUtils.PooledDB import PooledDBdef getConnStr():host = "172.17.0.2"port = 3306user = "greatdb"password = "greatdb"database = "test"conn = PooledDB(pymysql,host=host,user=user,port=port,password=password,database=database)return conndef execSqlSingle(conn_db, str_sql):con = conn_db.connection()cur = con.cursor()try:cur.execute(str_sql)result = cur.fetchall()print(result)con.commit()except Exception as e:con.rollback()print("SQL FAIL: ==>> {},result: ==>> {}".format(str_sql, e))con.close()cur.close()if __name__ == '__main__':conn = getConnStr()execSqlSingle(conn, "create table t_python(id int);")execSqlSingle(conn, "insert into t_python values (1),(2),(3),(4),(5);")execSqlSingle(conn, "delete from t_python where id =1;")execSqlSingle(conn, "select * from t_python;")

运行结果:

python3 ConnDB.py
((2,), (3,), (4,), (5,))

3.java

3.1 安装

安装略过
配置环境变量:

export JAVA_HOME=/usr/local/jdk-14.0.2
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export CLASSPATH=.:$JAVA_HOME/lib

直接下载

3.2代码

ConnDB.java

package ConnDB;import java.sql.*;
import java.sql.DriverManager;public class ConnDB {public static class Sqlnode {private static final String URL ="jdbc:mysql://172.17.0.2:3306/test";private static final String NAME = "greatdb";private static final String PASSWORD = "greatdb";public Connection run() {{try {Class.forName("com.mysql.cj.jdbc.Driver");} catch (ClassNotFoundException e) {e.printStackTrace();}}Connection conn1 = null;{try {conn1 = DriverManager.getConnection(URL, NAME, PASSWORD);} catch (SQLException throwables) {throwables.printStackTrace();}}return conn1;}}public static void main(String[] args) throws SQLException{Sqlnode conn = new Sqlnode();Statement st = conn.run().createStatement();String create = "create table t(id int);";st.executeUpdate(create);st.executeUpdate("insert into t values (1),(2),(3),(4),(5);");st.executeUpdate("update t set id =100 where id =1;");st.executeUpdate("delete from t where id >90;");try{ResultSet rs = st.executeQuery("select * from t;");while(rs.next()){System.out.println("查询结果:" +rs.getString("id"));}System.out.println("执行成功");}catch (SQLException e){e.printStackTrace();}}
}

编译执行:

javac ConnDB.java
java ConnDB.java
查询结果:2
查询结果:3
查询结果:4
查询结果:5
执行成功

4.go

4.1 安装

参考:https://golang.org/dl/

wget https://studygolang.com/dl/golang/go1.15.6.linux-amd64.tar.gz
gunzip go1.17.linux-amd64.tar.gz
mv go1.17.linux-amd64.tar  /usr/local/
sudo mv go1.17.linux-amd64.tar  /usr/local/
tar xf go1.17.linux-amd64.tar
cd /usr/local/go
go get github.com/go-sql-driver/mysql
go env -w GOPROXY=https://goproxy.io,direct
go install  github.com/go-sql-driver/mysql

环境变量:

export GOROOT=/usr/local/go
export GOPATH=/opt/go
export PATH=$PATH:$GOROOT/bin:$GOPATH

4.2 代码

connDB.go

package main
import ("database/sql""fmt"_ "github.com/go-sql-driver/mysql"
)
func main(){db,err := sql.Open("mysql","greatdb:greatdb@(172.17.0.2:3306)/test")defer db.Close()err = db.Ping()if err!=nil{fmt.Println("数据库连接失败!")return}// createsql:="create table t_go(id int);"db.Exec(sql)insert:="insert into t_go values (1),(2),(3),(4),(5);"db.Exec(insert)update:="update t_go set id=10 where id=1;"db.Exec(update)dele:= "delete from t_go where id =2;"db.Exec(dele)rows,err:=db.Query("select * from t_go;")for rows.Next(){var id  introws.Scan(&id)fmt.Print(id,"\n")}}

编译执行

go build connDB.go
go run connDB.go
10
3
4
5

5.c语言

如果是ubuntu系统,则执行apt install gcc,g++即可.
直接下载

上代码

#include <mysql.h>
#include <stdio.h>int main() {MYSQL *conn;MYSQL_RES *res;MYSQL m_sqlCon;MYSQL_ROW column;char *server = "172.17.0.2";char *user = "greatdb";char *password = "greatdb";char *database = "test";conn = mysql_init(&m_sqlCon);/* Connect to database */if (!mysql_real_connect(conn, server,user, password, database, 0, NULL, 0)) {fprintf(stderr, "%s\n", mysql_error(conn));exit(1);}// set namesmysql_query(conn,"set names GB2312");mysql_query(conn,"create table t_c(id int)");// insertif (mysql_query(conn,"insert into t_c values (1),(2),(3),(4),(5)")){printf("false");}else{printf("insert OK  ...\n");}// updateif (mysql_query(conn,"update t_c set id=10 where id=1")){printf("false");}else{printf("update OK ...\n");}// deleteif (mysql_query(conn,"delete from t_c where id =2")){printf("false");}else{printf("delete OK ...\n");}res = mysql_store_result(conn);if (!res) {printf("couldn't get result");return false;}// column numberint j = mysql_num_fields(res);char *str_field[32];for (int i=0;i<j;i++){str_field[i] = mysql_fetch_field(res)->name;}// print columnfor(int i=0;i<j;i++){printf("%10s\t",str_field[i]);}printf("\n");while(column = mysql_fetch_row(res)){printf("%10s\t %10s\n",column[0],column[1]);}mysql_close(conn);
}

编译执行

gcc connApi.c -o connect_api -I /usr/include/mysql -L /usr/lib/mysql -lmysqlclient
./connect_api
insert OK  ...
update OK ...
delete OK ...greatdb查询结果:
GreatDB Cluster[test]> select * from t_c;
+------+
| id   |
+------+
|   10 |
|    3 |
|    4 |
|    5 |
+------+
4 rows in set (0.00 sec)

6.php

如果是ubuntu系统,则安装apache2,如果 是centos系统,将apache2换为httpd即可.

6.1 安装

sudo apt install apache2
sudo apt install libapache2-mod-php7.4
sudo apt-get install php
sudo apt-get install libapache2-mod-php
sudo systemctl restart apache2 # apache2 占用主机80端口,如果本机装有nginx请考虑换端口或关掉nginx
# 验证
jiaona@jiaona-OptiPlex-7080:/var/www/html$ php -v
PHP 7.4.3 (cli) (built: Jul  5 2021 15:13:35) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologieswith Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

修改apache2配置文件: 在文件末尾将php文件也加进去

jiaona@jiaona-OptiPlex-7080:/var/www/html$ tail -1 /etc/apache2/apache2.conf
AddType application/x-httpd-php .php .htm .html

修改php文件,加入以下几行:

jiaona@jiaona-OptiPlex-7080:/var/www/html$ tail -20 /etc/php/7.4/apache2/php.ini
;ffi.preload=
;extension_dir =".\ext" register_globals= On  short_open_tag =On cgi.force_redirect= 0 fastcgi.impersonate= 1cgi.rfc2616_headers= 1extension=php_mbstring.dllextension=php_mysql.dllextension=php_mysqli.dllextension=php_pdo_mysql.dl

重启

6.2 上代码

shell>cd /var/www/html
shell>vim phpConn.php

<?php
$conn = mysqli_connect("172.17.0.2","greatdb","greatdb");if (!$conn)
{die("Couldn't not connect:".mysqli_error());
}
// create tableif (mysqli_query($conn,"create table test.t_php(id int)") == TRUE) {printf("create ok...\n");
}
if (mysqli_query($conn,"insert into test.t_php values (1),(2),(3),(4),(5)") == TRUE ) {print("insert ok...\n");
}
if (mysqli_query($conn,"update test.t_php set id=20 where id=2)") == TRUE ) {printf("update ok...\n");
}
if (mysqli_query($conn,"delete from test.t_php where id=1") == TRUE ) {printf("delete ok...\n");
}
if ($row = mysqli_query($conn,"select id from test.t_php")) {printf("select returned %d rows.\n",mysqli_num_rows($row));mysqli_free_result($row);
}
mysqli_close($conn)
?>

编译执行

shell> php phpConn.php
create ok...
insert ok...
delete ok...
select returned 4 rows.
回到greatdb查看返回的数据:
GreatDB Cluster[test]> select * from t_php;
+------+
| id   |
+------+
|    2 |
|    3 |
|    4 |
|    5 |
+------+
4 rows in set (0.01 sec)

7. perl

7.1 安装

首先安装perl的依赖

perl -MCPAN -e shell
install DBD::mysql
install DBI

上代码

#!/usr/bin/perluse strict;
use DBI;
my $host="172.17.0.2";
my $user="greatdb";
my $driver="mysql";
my $database = "test";
my $dsn = "DBI:$driver:database=$database:$host";
my $password= "greatdb";## conn dbmy $conn = DBI->connect($dsn,$user,$password) or die $DBI::errstr;
my $a = $conn->prepare("create table test.t_perl(id int)");
$a->execute() or die $DBI::errstr;
$a->finish();my $id="100";
my $sth = $conn->prepare("insert into test.t_perl(id) values (?),(2),(3),(4),(5)");
$sth->execute($id) or die $DBI::errstr;
if ($sth)
{print "insert ok ..."
}
$sth->finish();my $sth_update = $conn->prepare("update test.t_perl set id =10 where id =100");
$sth_update->execute() or die $DBI::errstr;
print "affected rows : " +$sth_update->rows;
$sth_update->finish();# select
my $select = $conn->prepare("select * from test.t_perl");
$select->execute();
while (my @row = $select->fetchrow_array())
{print join('\t',@row)."\n";
}
$select->finish();
my $sth_delete = $conn->prepare("delete from test.t_perl where id = 10");
$sth_delete->execute() or die $DBI::errstr;
print "affected rows : "+ $sth_delete->rows;$sth_delete->finish();$conn->disconnect();

编译执行

jiaona@jiaona-OptiPlex-7080:~/driver_conn_db$ ./perlConn.perl
insert ok ...110
2
3
4
5
回到gretdb,查看执行结果
jiaona@jiaona-OptiPlex-7080:~/driver_conn_db$$greatsql -ugreatdb -pgreatdb -h172.17.0.2 -P3306
greatsql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10661
Server version: 8.0.25-15-greatdbcluster5.0.7-GA GreatDB Cluster, Release GA, Revision 7b86a29eb19Copyright (c) 2009-2021 BEIJING GREAT OPENSOURCE SOFTWARE TECHNOLOGY CO.,LTD. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.GreatDB Cluster[(none)]> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
GreatDB Cluster[test]> select * from t_perl;
+------+
| id   |
+------+
|    2 |
|    3 |
|    4 |
|    5 |
+------+
4 rows in set (0.00 sec)

python,java,go,perl,php,c等驱动连接数据库相关推荐

  1. python perl lisp_巴别塔-编程语言之旅【转】——C、C++、Lisp、Java、Perl、Ruby、Python核心比较...

    译者:qinjian623原文作者:Steve Yegge 说明 但是由于文章内容比较和我胃口,还是决定再翻译一个版本. 巴别塔 这是我自己混乱的编程语言之旅,原本准备这个月写给ADJ(Amazon ...

  2. (转)通天塔导游讲述C,C++,Lisp,Java,Perl,(我们在亚马逊用到的所有语言),Ruby (我就是喜欢),和Python...

    https://code.google.com/archive/p/windows-config/wikis/TourDeBabel.wiki 通天塔导游 (译注:圣经记载:在远古的时候,人类都使用一 ...

  3. 大牛谈各种语言 包括c/c++/java/python/ruby/lisp/perl ​​​

    通天塔导游 (译注:圣经记载:在远古的时候,人类都使用一种语言,全世界的人决定一起造一座通天的塔,就是巴别塔,后来被上帝知道了,上帝就让人们使用不同的语言,这个塔就没能造起来. 巴别塔不建自毁,与其说 ...

  4. python java php c#_Python和Java、PHP、C、C#、C++等其他语言的对比?

    1111 1.C语言,它既有高级语言的特点,又具有汇编语言的特点,它是结构式语言.C语言应用指针:可以直接进行靠近硬件的操作,但是C的指针操作不做保护,也给它带来了很多不安全的因素.C++在这方面做了 ...

  5. Java/python实现学生选课/学生信息管理系统(连接数据库)

    Java/python实现学生选课/学生信息管理系统(连接数据库) 说明:Python实现版请参考以下连接: https://blog.csdn.net/m_target/article/detail ...

  6. 梯度下降原理及线性回归代码实现(python/java/c++)

    "梯度下降"顾名思义通过一步一步迭代逼近理想结果,当达到一定的精度或者超过迭代次数才退出,所以所获得的结果是一个近似值.在其他博客上面基本都有一个通俗的比喻:从山顶一步步下山.下面 ...

  7. python篮球-基于Python/Java的人工智能篮球训练系统的制作方法

    本发明涉及信息技术领域,尤其涉及一种基于Python/Java的人工智能篮球训练系统. 背景技术: 人工智能的发展已经开始渗透到各行各业.经过发明人的研究和检索,发现作为篮球训练,已经有专利申请.其中 ...

  8. paip.文件目录操作uAPI php python java对照

    paip.文件目录操作uAPI php python java对照 chdir -- 改变目录 chroot -- 改变根目录 dir -- directory 类 closedir -- 关闭目录句 ...

  9. Python JAVA Solutions for Leetcode

    Python & JAVA Solutions for Leetcode (inspired by haoel's leetcode) Remember solutions are only ...

最新文章

  1. Docker镜像优化
  2. 通信专业学python有用吗-一起学Python:网络通信过程
  3. 共享一个查找IP所在交换机端口的方法
  4. 延迟反馈带来的样本偏差如何处理
  5. 选择通过更改内容类型返回的详细程度,第二部分
  6. UML类图介绍及简单用法
  7. [蛋蛋の涂鸦日记]02-致电通渠中心
  8. windows doc快捷键
  9. OpenShift 4 - Ingress、Route与Shard
  10. 模拟SAP ALV下载XLSX文件
  11. 在设备上启用开发者选项
  12. 计算机系统图标文件,电脑软件的图标图片文件都集中在哪个文件夹??
  13. vue+flv.js实现视频播放
  14. c语言上机题库程序设计,c语言上机程序设计题库及答案.pdf
  15. 第二十一章 : 文本处理
  16. 一份Hive面试题及答案
  17. 球面图形到全景图像的正投影和逆投影
  18. The following packages have unmet dependencies问题解决
  19. Android80go平台的桌面布局(带gms)
  20. 这样学Shader可以少走几年弯路,看完我信了……

热门文章

  1. 世界冰箱竞争格局第3次被重塑,海尔牵头迎来“中国时代”
  2. Lammps实现单轴压缩-应力应变曲线以及弹性模量计算
  3. Docker端口映射无法访问的问题排查
  4. 【黑盒测试用例设计方法4】因果图法及其示例
  5. 一篇感谢我的朋友的随笔
  6. 怎么让html滚动字幕居中,CSS设置DIV窗口上下居中无滚动条
  7. Delphi RenameFile 文件改名
  8. lol服务器维护9月30,LOL云顶之弈2020年9月30日更新结束时间一览 10.20版本上线
  9. 众享比特未来融合研究院执行院长王陈慧子博士以第一作者在IEEE TCSS上发表论文
  10. 认知偏差与信息不对称