sql插入语句

Python操作SQLite/MySQL/LMDB

半世苍凉 提交于 2019-12-10 12:28:49
概述 1.1前言   最近在存储字模图像集的时候,需要学习LMDB,趁此机会复习了SQLite和MySQL的使用,一起整理在此。 1.2环境   使用win7,Python 3.5.2。 2.SQLite 2.1准备   SQLite是一种嵌入式数据库,它的数据库就是一个文件。Python 2.5x以上版本内置了SQLite3,使用时直接import sqlite3即可。 2.2操作流程   概括地讲,操作SQLite的流程是:     ·通过sqlite3.open()创建与数据库文件的连接对象connection     ·通过connection.cursor()创建光标对象cursor     ·通过cursor.execute()执行SQL语句     ·通过connection.commit()提交当前的事务,或者通过cursor.fetchall()获得查询结果     ·通过connection.close()关闭与数据库文件的连接   详细的sqlite3模块API可以看这里:SQLite - Python   总结起来就是用cursor.execute()执行SQL语句,改变数据(插入、删除、修改)时用connection.commit()提交变更,查询数据时用cursor.fetchall()得到查询结果。 2.3操作实例 2.3.1建立数据库与建立表

实用sql语句

◇◆丶佛笑我妖孽 提交于 2019-12-04 11:33:58
在编写SQL时,灵活运用一些技巧,可以大大简化程序逻辑。 插入或替换 如果我们希望插入一条新记录(INSERT),但如果记录已经存在,就先删除原记录,再插入新记录。此时,可以使用 REPLACE 语句,这样就不必先查询,再决定是否先删除再插入: REPLACE INTO students (id, class_id, name, gender, score) VALUES (1, 1, '小明', 'F', 99); 若 id=1 的记录不存在, REPLACE 语句将插入新记录,否则,当前 id=1 的记录将被删除,然后再插入新记录。 插入或更新 如果我们希望插入一条新记录(INSERT),但如果记录已经存在,就更新该记录,此时,可以使用 INSERT INTO ... ON DUPLICATE KEY UPDATE ... 语句: INSERT INTO students (id, class_id, name, gender, score) VALUES (1, 1, '小明', 'F', 99) ON DUPLICATE KEY UPDATE name='小明', gender='F', score=99; 若 id=1 的记录不存在, INSERT 语句将插入新记录,否则,当前 id=1 的记录将被更新,更新的字段由 UPDATE 指定。 插入或忽略

Python操作SQLite/MySQL/LMDB

痴心易碎 提交于 2019-12-03 23:20:21
1.概述 1.1前言   最近在存储字模图像集的时候,需要学习LMDB,趁此机会复习了SQLite和MySQL的使用,一起整理在此。 1.2环境   使用win7,Python 3.5.2。 2.SQLite 2.1准备   SQLite是一种嵌入式数据库,它的数据库就是一个文件。Python 2.5x以上版本内置了SQLite3,使用时直接import sqlite3即可。 2.2操作流程   概括地讲,操作SQLite的流程是:     ·通过sqlite3.open()创建与数据库文件的连接对象connection     ·通过connection.cursor()创建光标对象cursor     ·通过cursor.execute()执行SQL语句     ·通过connection.commit()提交当前的事务,或者通过cursor.fetchall()获得查询结果     ·通过connection.close()关闭与数据库文件的连接   详细的sqlite3模块API可以看这里: SQLite - Python   总结起来就是用cursor.execute()执行SQL语句,改变数据(插入、删除、修改)时用connection.commit()提交变更,查询数据时用cursor.fetchall()得到查询结果。 2.3操作实例 2.3.1建立数据库与建立表

python Mysql数据库连接池组件封装(转载)

核能气质少年 提交于 2019-12-03 08:24:45
以前一直在用Java来开发,数据库连接池等都是有组件封装好的,直接使用即可,最近在尝试Python的学习,碰到了和数据库打交道的问题,和数据库打交道我们都知道,数据库连接池必不可少,不然要么就是程序异常不稳定,要么就是数据库莫名其妙挂了, 本篇博客主要是对数据库操作的简单封装,相当于一个DBHelper操作类 组件 Python中的数据库连接操作所需组件 pymysql:mysql的Python连接包 DBUtils:连接池组件 configparser:配置文件模块 mysql-connector-python:驱动包 以上模块都是必装组件,使用pip很轻松就安装 开始 组件的封装主要考虑到多种数据库、可配置的情况,因此我们的数据库相关信息不能使用硬编码的方式,需要将数据库放到配置文件中,这样和代码会有一个解耦,也不用频繁更改代码 代码 封装的类主要包含的基础方法: 提供查询的方法 分页查询的方法 插入数据 删除数据 更新数据 批量插入、删除、更新数据 配置文件 将数据库的相关信息写入db.conf配置文件中,配置文件如下: [master] # 数据库连接主机 host=192.168.0.212 # 数据库端口号 port=3306 # 用户名 user=root # 密码 password=123456 # 数据库名称 database=test # 数据库连接池最大连接数

SQL语句

匿名 (未验证) 提交于 2019-12-02 23:49:02
SQL语句(不区分大小的语言) 基础 创建数据库 CREATE DATABASE database-name CREATE TABLE 语句用于创建数据库中的表 CREATE TABLE table_name ( column_name1 data_type ( size ), column_name2 data_type ( size ), column_name3 data_type ( size ), … ); column_name 参数规定表中列的名称。 data_type 参数规定列的数据类型(例如 varchar、integer、decimal、date 等等)。 size 参数规定表中列的最大长度 约束 语法 CREATE TABLE table_name ( column_name1 data_type ( size ) constraint_name , column_name2 data_type ( size ) constraint_name , column_name3 data_type ( size ) constraint_name , … ); NOT NULL - 指示某列不能存储 NULL 值。 UNIQUE - 保证某列的每行必须有唯一的值。 PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列

mysql常见的hint

限于喜欢 提交于 2019-11-29 08:08:36
mysql常用的hint 对于经常使用oracle的朋友可能知道,oracle的hint功能种类很多,对于优化sql语句提供了很多方法。同样,在mysql里,也有类似的hint功能。下面介绍一些常用的。 强制索引 FORCE INDEX SELECT * FROM TABLE1 FORCE INDEX (FIELD1) … 以上的SQL语句只使用建立在FIELD1上的索引,而不使用其它字段上的索引。 忽略索引 IGNORE INDEX SELECT * FROM TABLE1 IGNORE INDEX (FIELD1, FIELD2) … 在上面的SQL语句中,TABLE1表中FIELD1和FIELD2上的索引不被使用。 关闭查询缓冲 SQL_NO_CACHE SELECT SQL_NO_CACHE field1, field2 FROM TABLE1; 有一些SQL语句需要实时地查询数据,或者并不经常使用(可能一天就执行一两次),这样就需要把缓冲关了,不管这条SQL语句是否被执行过,服务器都不会在缓冲区中查找,每次都会执行它。 强制查询缓冲 SQL_CACHE SELECT SQL_CALHE * FROM TABLE1; 如果在my.ini中的query_cache_type设成2,这样只有在使用了SQL_CACHE后,才使用查询缓冲。 优先操作 HIGH_PRIORITY

insert all 语句 用法详解

寵の児 提交于 2019-11-27 01:37:18
INSERT ALL语句的一些使用技巧。 首先描述一下需求,其实要进行的操作很简单:从一张表取数据插入到另一张表中,插入的目标表做了一个应用系统级的日志表,也就是说在插入目标表的同时,还需要将相同的数据插入到日志表中。 这个操作其实并不复杂,但是想找到一个效率最高、并发性最好的方法并不容易。 最普通的方法是两个INSERT INTO SELECT语句。这种方法编码最简单,但是存在着两次插入的数据不一致的情况。如果要解决这个问题,必须通过人为加锁的方式,这样又会影响并发性。 还有一种方式是通过临时表的方式。第一次将数据放到临时表中,然后通过临时表把数据分别插入目标表和日志表。这种方法虽然解决了并发性问题,但是效率比较低。相同的数据需要查询三次,插入三次。 PL/SQL的语法RETURNING语句其实很适合这种情况,可惜的是RETURNING语句只支持INSERT INTO VALUES语句,不支持INSERT INTO SELECT语句。 如果数据量不大的话,还可以考虑使用SELECT BULK COLLECT INTO和FOR ALL INSERT语句配合。如果数据量比较大的话,可以考虑在上面的基础上加上LIMIT语句限制一次处理的数据量大小。这种方法不但解决了并发性而且只需要读取一次插入两次,执行效率相对比较高。唯一的缺点是,需要将数据放到内存的变量中,不但需要额外的内存空间

向数据库插入一条sql语句 返回id

天大地大妈咪最大 提交于 2019-11-26 14:20:15
insert into 表名(字段名) values(值。。。。) select SCOPE_IDENTITY(); --返回本次语句块中插入数据的最后一个自增量ID insert into 表名(字段名) values(值。。。。) select @@IDENTITY; --返回整个数据库中插入数据的最后一个自增量ID 来源: CSDN 作者: z_x_s_ 链接: https://blog.csdn.net/Z_X_S_/article/details/7367406