全志03 sqlite数据库 python环境安装和学习

该文详细介绍了SQLite数据库的安装过程,包括在Linux环境下的编译与安装步骤。接着,文章提供了SQLite的命令行用法,如创建数据库、表,插入、查询、删除和修改记录。此外,还展示了如何通过C接口进行数据库操作,并给出了C语言示例代码。最后,文章提到了在OrangePiZero2上搭建Python3.9环境的方法,包括下载、编译、安装以及设置Python软链接和更换pip源。
摘要由CSDN通过智能技术生成

目录

嵌入式数据库 

4.1 SQLite简介

​编辑4.2 SQLite数据库安装

SQLite的命令用法

 创建一个数据库

 创建一张表格

插入一条记录 

查看数据库的记录

 删除一条记录

 更改一条记录

 删除一张表

增加一列

 sqlit3 c接口

 通过C接口增删改查

python环境搭建


嵌入式数据库 

4.1 SQLite简介

4.2 SQLite数据库安装

下载地址

https://www.sqlite.org/download.html

 

 1. 把下载的文件sqlite-autoconf-3390000.tar.gz上传到开发板
2. tar xvf sqlite-autoconf-3390000.tar.gz 解压
3. cd sqlite-autoconf-3390000 进入文件夹
4. ./configure --prefix=/usr/local 配置安装路径在/usr/local
5. make 编译//比较久10分钟 6. sudo make install 安装

 安装成功

SQLite的命令用法

 创建一个数据库

方式一:

1. sqlite3 进入数据库 2. .open test.db 3. .quit 数据库退出后在命令当前路径创建数据库test.db

方式二: 

sqlite3 test.db //在命令运行当前窗口创建数据库test.db 在数据库命令下 .databases 列出当前打开的数据库 .quit 退出

 创建一张表格

create table stu2(id Integer,name char,score Integer);

插入一条记录 

insert into stu values(18130106,'huang',99);//stu是库名字

insert into stu2 values(18130101,"gang",100); ''和""都行

insert into stu(name,score) values("huanggang",98); 插入部分字段内容

查看数据库的记录

select * from stu; //查询所有字段的结果

select name,score from stu; //查询数据库中部分字段的内容 

 删除一条记录

delete from stu where id = 18;//删除stu库中的id是18这组

 更改一条记录

update stu set name = 'huangg' where id = 18;//找到id为18 这个 把name更改为huangg

 删除一张表

drop table stu;

增加一列

alter table stu add column sex char;//往这个stu库中增加一个列 sex性别char型 

 sqlit3 c接口

#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>
//int callback(void *arg, int column_size, char *column_value[], char*column_name[])
//           tata传的参数  字段数大小     列的值             列的名字
int sqlite_callback(void *arg,int column_size,char *column_value[],char *column_name[]){
//      printf("column_size %d\n",column_size);//三行
        int  i=0;
        for(i = 0;i < column_size;i++){
                printf("%s = %s\n",column_name[i],column_value[i]);
        }
        printf("------------------------\n");
        return 0;//必须返回0  返回0时 数据库有多少数据 调用多少次
}

int main(int argc,char **argv)
{
        //sqlite3_open(const char *filename, sqlite3 **ppDb)
        sqlite3 *db;//定义一个数据指针
        int ret;

        if(argc < 2){
                printf("usage %s xxx.db\n",argv[0]);
                exit(-1);
        }

        if((ret = sqlite3_open(argv[1],&db)) == SQLITE_OK){//数据库指针指向argv[1]的表
                printf("open %s succeed  ret = %d\n",argv[1],ret);//打印传的参数 和返回值
        }
        else{
                printf("error:%s ret = %d\n",sqlite3_errmsg(db),ret);//errmsg获取错误原因
                if(ret == 14){//如果没打开成功 返回值14 则是没有权限打开
                        printf("wu qian xian da kai\n");
                }
                exit(-1);
        }

//      sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void *data, char **errmsg)
//                   数据库对象  数据库命令   回调函数    data作为第一个参数传给回调函数  errmsg二级用于存放错误信息
        sqlite3_exec(db,"select * from stu",sqlite_callback,NULL,NULL);//

        sqlite3_close(db);
        printf("done!!\n");
        return 0;
}

 通过C接口增删改查

#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>
//int callback(void *arg, int column_size, char *column_value[], char*column_name[])
//           tata传的参数  字段数大小     列的值             列的名字
int callback(void *arg,int column_size,char *column_value[],char *column_name[]){
        printf("column_size %d\n",column_size);//三行
        printf("%s\n",(char *)arg);//exec 传过来data的数据
        int  i=0;
        for(i = 0;i < column_size;i++){
                printf("%s = %s\n",column_name[i],column_value[i]);
        }
        printf("------------------------\n");
        return 0;//必须返回0  返回0时 数据库有多少数据 调用多少次
}

int main(int argc,char **argv)
{
        //sqlite3_open(const char *filename, sqlite3 **ppDb)
        sqlite3 *db;//定义一个数据指针
        int ret;
        char *errmsg = NULL;

        if(argc < 2){
                printf("usage %s xxx.db\n",argv[0]);
                exit(-1);
        }

        // 1 打开sqlite3中的argv[1]的数据库
        if((ret = sqlite3_open(argv[1],&db)) == SQLITE_OK){// -- 1 --数据库指针指向argv[1]
                printf("open %s succeed  ret = %d\n",argv[1],ret);//打印传的参数 和返回值
                printf("\n");
        }
        else{
                printf("error:%s ret = %d\n",sqlite3_errmsg(db),ret);//errmsg获取错误原因
                if(ret == 14){//如果没打开成功 返回值14 则是没有权限打开
                        printf("wu quan xian da kai\n");
                }
                exit(-1);
        }

        // 2 创建表
//      sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void *data, char **errmsg)
//                   数据库对象  数据库命令   回调函数    data作为第一个参数传给回调函数  errmsg二级用于存放错误信息
        ret = sqlite3_exec(db,"create table Class01(id integer,name char,addr char)",\
                        callback,"this is db->Class01",&errmsg);//在stu这个数据库下创建Class01这个表
        printf("create   ret = %d \n",ret);
        if(ret != 0){
                printf("create error:%s\n",errmsg);//文件存在创建失败 不影响后面  错误原因存放在errmsg中
        }

        // 3 往表中插入数据
        ret = sqlite3_exec(db,"insert into Class01 values(01,'aa','xiamen')",\
                        callback,"this is db->Class01",&errmsg);//往stu数据库下的Class01表中插入数据

        ret = sqlite3_exec(db,"insert into Class01 values(02,'bb','fuzhou')",\
                        callback,"this is db->Class01",&errmsg);//往stu数据库下的Class01表中插入数据
        printf("insert   ret = %d \n",ret);


        // 4 显示表中内容 每次插入会往后叠加
        sqlite3_exec(db,"select * from Class01",callback,"this is sqlite-->stu-->Class01",&errmsg);//

        printf("---------------------------------------------------------------------------------\n");

        // 5 删除其中一项
        sqlite3_exec(db,"delete from Class01 where id = 02",callback,"this is sqlite-->stu-->Class01",&errmsg);//

        // 6 修改其中一项
        sqlite3_exec(db,"update Class01 set addr = 'shanghai' where id = 01",callback,"this is sqlite-->stu-->Class01",&errmsg);//

        // 7 删除02 修改完01 再显示表中内容 每次插入会往后叠加
        sqlite3_exec(db,"select * from Class01",callback,"this is sqlite-->stu-->Class01",&errmsg);//

        // 5 关闭
        sqlite3_close(db);
        printf("done!!\n");
        return 0;
}

python环境搭建

=============================================orangepi Zero2 安装Python 3.9====================================== sudo apt update 安装编译Python需要用到的环境 sudo apt install -y build-essential zlib1g-dev \ libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev \ libreadline-dev libffi-dev curl libbz2-dev 下载Python源码 wget \ https://www.python.org/ftp/python/3.9.10/Python-3.9.10.tgz 解压源码包 tar xvf Python-3.9.10.tgz 配置 ./configure --enable-optimizations 编译 make -j4 安装 sudo make install =======================================================以上完成了python的安装,

路径默 认是/usr/local/bin================= 建立软连接,指定python指令找到刚安装的python3.9, 软连接理解成程序别名 sudo rm -f /usr/bin/python 删除原来的软连接 sudo ln -s /usr/local/bin/python3.9 /usr/bin/python 在/usr/bin/目录创建软连接 python,定向/usr/local/bin/python3.9 python --version 检查python版本是否是3.9 ================================================================================ =================================== Linux 系统 pip 默认使用的源为 Python 官方的源, 但是国内访问 Python 官方 的源速度是很慢的, 并且经常会由于网络原因导致 Python 软件包安装失败。 所以 在使用 pip 安装 Python 库时, 请记得更换下 pip 源。 更新pip pip有点像python环境中的apt-get,从服务器获得python开发用的第三方包 sudo apt install -y python-pip python3-pip 更新源 mkdir -p ~/.pip 建立pip工作文件夹 vim ~/.pip/pip.conf 添加pip服务器配置文件 内容如下: [global] timeout = 6000 index-url = https://pypi.tuna.tsinghua.edu.cn/simple trusted-host = pypi.tuna.tsinghua.edu.cn] =============================================orangepi Zero2 安装Python 3.9=====================================

 python基于菜鸟教程学习实践:

Python for 循环语句 | 菜鸟教程  PythPython for 循环语句 Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。 语法: for循环的语法格式如下: for iterating_var in sequence: statements(s) 流程图: 实例: 实例 [mycode3 type='python'] #!/usr/bin/python # -*- coding: UTF-8 -*- f..https://www.runoob.com/python/python-for-loop.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值