首页 > 数据库 >sql base nodejs py go操作基本的db

sql base nodejs py go操作基本的db

时间:2023-01-22 10:02:40浏览次数:56  
标签:name err nodejs age py db fmt email uid


const mysql = require('mysql2');

const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'root',
database: 'mybatis_plus'
});

// simple query
connection.query('SELECT * FROM `user`',
function(err, results, fields) {
console.log(results); // results contains rows returned by server
// console.log(fields); // fields contains extra meta data about results, if available
}
);
import pymysql.cursors

# Connect to the database
connection = pymysql.connect(host='localhost',
user='root',
password='root',
database='mybatis_plus',
cursorclass=pymysql.cursors.DictCursor)

with connection:
with connection.cursor() as cursor:
# Create a new record
sql = "INSERT INTO `user` ( `name`,`age`,`email`) VALUES ( %s, %s, %s)"
cursor.execute(sql, ('newPystudy', '150', '[email protected]'))

# connection is not autocommit by default. So you must commit to save
# your changes.
connection.commit()

with connection.cursor() as cursor:
# Read a single record
sql = "SELECT `uid`, `name`,`age`,`email` FROM `user`"
cursor.execute(sql)
# result = cursor.fetchone()
result = cursor.fetchall()
print(result)
print(len(result))
package main

import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)

func main() {
fmt.Println("begin ...")

//for i := 0; i < 100; i++ {
// fmt.Println(i)
//}

//r := gin.Default()
//
//r.GET("/", func(c *gin.Context) {
// fmt.Println(c.Params)
//
// c.JSON(http.StatusOK, gin.H{
// "code": 20000,
// "message": "success",
// "data": gin.H{},
// })
//})
//
//r.Run(":8080")

testDB()
}

type User struct {
uid int
age int
name string
email string
}

func testDB() {
err := initDB() // 调用输出化数据库的函数
if err != nil {
fmt.Printf("init db failed,err:%v\n", err)
return
}

//queryRowDemo()
queryMultiRowDemo()
}

// 查询单条数据示例
func queryRowDemo() {
sqlStr := "select uid, name, age, email from user where uid=?"
var u User
// 非常重要:确保QueryRow之后调用Scan方法,否则持有的数据库链接不会被释放
err := db.QueryRow(sqlStr, 1).Scan(&u.uid, &u.name, &u.age, &u.email)
if err != nil {
fmt.Printf("scan failed, err:%v\n", err)
return
}
fmt.Printf("id:%d name:%s age:%d email:%s \n", u.uid, u.name, u.age, u.email)
}

// 查询多条数据示例
func queryMultiRowDemo() {
sqlStr := "select uid, name, age, email from user"
rows, err := db.Query(sqlStr)
if err != nil {
fmt.Printf("query failed, err:%v\n", err)
return
}
// 非常重要:关闭rows释放持有的数据库链接
defer rows.Close()

var users []User

// 循环读取结果集中的数据
for rows.Next() {
var u User
err := rows.Scan(&u.uid, &u.name, &u.age, &u.email)
if err != nil {
fmt.Printf("scan failed, err:%v\n", err)
return
}
fmt.Printf("id:%d name:%s age:%d email:%s \n", u.uid, u.name, u.age, u.email)
users = append(users, u)
}

println("users -----------------------")
println(len(users))

for _, v := range users {
println(v.uid, v.name, v.age, v.email)
}

//var arr []int
//arr = append(arr, 1)
//arr = append(arr, 2)
//println(len(arr))
//
//for i, v := range arr {
// println(i, v)
//}

}

var db *sql.DB

// 定义一个初始化数据库的函数
func initDB() (err error) {
// DSN:Data Source Name
dsn := "root:root@tcp(127.0.0.1:3306)/mybatis_plus?charset=utf8mb4&parseTime=True"
// 不会校验账号密码是否正确
// 注意!!!这里不要使用:=,我们是给全局变量赋值,然后在main函数中使用全局变量db
db, err = sql.Open("mysql", dsn)
if err != nil {
return err
}
// 尝试与数据库建立连接(校验dsn是否正确)
err = db.Ping()
if err != nil {
return err
}
return nil
}


标签:name,err,nodejs,age,py,db,fmt,email,uid
From: https://blog.51cto.com/u_12836588/6021428

相关文章

  • Python入门之bool类型
    """bool运算符比较运算符><>=<===结果是:bool类型逻辑运算符:判断两个bool值关系与......
  • Python入门之数据转换练习
    #练习3#古代的秤一斤的16两,33=2斤1两#练习:在控制台中获取两,计算是几斤零几两#显示几斤零几两weight_liang=int(input("请输入多少两:"))jin=weight_lia......
  • python异常处理
    Python的异常机制主要依赖try、except、else、finally和raise五个关键字,其中在try关键字后缩进的代码块简称try块,它里面放置的是可能引发异常的代码;在except后对应的是......
  • happy new year
    <!DOCTYPEhtml><htmllang="en"><head>  <metacharset="UTF-8">  <title>Fireworks</title><style>body{ background:black; overflow:hidden; margin:0;}......
  • Python-实现逻辑回归
    Python-实现逻辑回归1逻辑回归感知器的缺点是只能做线性可分的分类任务,如果任务不是完全可以线性可分的,那么感知器是永远不能收敛的,因为每次更新都会有至少一个错误。现......
  • QML与python互相通信
    解决python与QML的通信问题:QML中直接调用python函数python发送信号,QML响应信号并进行相应处理py文件#ThisPythonfileusesthefollowingencoding:utf-8impor......
  • 什么是 Python 中的装饰器?
    装饰器是Python中最强大的设计模式之一。装饰器用于向已创建的对象添加新功能,而无需修改其结构。使用装饰器,您可以轻松包装另一个函数以扩展包装的函数行为,并且无需永久修......
  • Python——01.环境及安装
    Python介绍--Python是解释型,面向对象的语言,程序结构简洁,清晰--Python解释器分类:CPython(官方解释器):用C语言编写的Python解释器PyPy:用Python语言编写的Python......
  • 用Python写一个模拟过年礼花的程序
    介绍过年了,好不容易熬到疫情放开,也该放烟花放鞭炮庆祝下了,祝大家新年快乐,身体健康,万事如意,希望新的一年诸邪退散,春暖花开~主程序importpygame,math,time,random,......
  • 2023.1.21 app后端pyinstaller启动
    1.打包后会在dist文件夹中暂时生成一个新的文件目录,点击app.exe后也是在这个暂时的文件目录下读取文件的,所以需要以下代码拷贝添加原始项目中的文件pyinstaller-Dapp.p......