首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysql技巧:如果记录存在则更新如果不存在则插入的三种处理方法

要求: 新增一个员工时,如果该员工已存在(以员工号f_emp_code作为判断依据),则更新,否则插入。而且工资f_salary,更新时,不得低于原工资(即:工资只能涨,不能降)。...10007' , '新人' , '西安' , IF(1000 > f_salary , 1000 , f_salary)); replace into相当于,先检测该记录是否存在(根据表上的唯一键),如果存在...这个方法有一个很大的问题,如果记录存在,每次执行完,主键自增id就变了(相当于重新insert了一条),对于有复杂关联的业务场景,如果主表的id变了,其它子表没做好同步,会死得很难看。...但是有另外一个问题,如果这个表上有不止一个唯一约束,在特定版本的mysql中容易产生dead lock(死锁),见网友文章https://blog.csdn.net/pml18710973036/article

9.2K20

pymysql ︱mysql的基本操作与dbutils+PooledDB使用

第四个参数your_database_name是将导入的数据库名字 if_exists='append’的意思是,如果表tablename存在,则将数据添加到这个表的后面 fail的意思如果表存在...,啥也不做 replace的意思,如果表存在,删了表,再建立一个新表,把数据插入 append的意思,如果表存在,把数据插入,如果表不存在创建一个表!!...(), 'col_bool':sqlalchemy.types.Boolean }) 注 如果不提供dtype,to_sql会自动根据df列的dtype...选择默认的数据类型输出,比如字符型会以sqlalchemy.types.TEXT类型输出,相比NVARCHAR,TEXT类型的数据所占的空间更大,所以一般会指定输出为NVARCHAR; 而如果df的列的类型为...(z|f)ood’ 则匹配 “zood” 或 “food”。

4.9K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    python从SQL型数据库读写dataframe型数据

    columns: 要选取的列。一般没啥用,因为在sql命令里面一般就指定要选择的列了 chunksize:如果提供了一个整数值,那么就会返回一个generator,每次输出的行数就是提供的值的大小。...以链接常见的mysql数据库为例: import pandas as pd import pymysql import sqlalchemy from sqlalchemy import create_engine...用sqlalchemy构建数据库链接engine connect_info = 'mysql+pymysql://{}:{}@{}:{}/{}?...}) 注:如果不提供dtype,to_sql会自动根据df列的dtype选择默认的数据类型输出,比如字符型会以sqlalchemy.types.TEXT类型输出,相比NVARCHAR...,TEXT类型的数据所占的空间更大,所以一般会指定输出为NVARCHAR;而如果df的列的类型为np.int64时,将会导致无法识别并转换成INTEGER型,需要事先转换成int类型(用map,apply

    1.8K20

    51行代码,自制Txt转MySQL软件!

    ,没关系,我们删除下整列都为nan的列即可,数据读取无误后,我们在添加上表头,实现代码如下: # 读取文件 def get_txt_data(filepath): columns = ['A',...(如果确实有这种列,后面可以再加上,不影响) data.dropna(axis=1, how='all', inplace=True) # 指定列名 data.columns...则直接简单去重后、存入数据库 data.drop_duplicates(inplace=True) return data 2.3 数据存储 因为我们要将数据存储到mysql,所以存储之前...,我们需要先连接上数据库,这里我使用的是sqlalchemy+pymysql链接mysql数据库,代码如下: # 链接数据库 def link_mysql(user, password, database...读取指定文件,数据处理后,存入指定的数据库表中,如果表不存在就直接创建一个新表存储数据;否则直接添加数据到数据表中。

    1.8K20

    一场pandas与SQL的巅峰大战(七)

    pandas操作MySQL数据库 这一部分我们来看下pandas直接操作数据库的例子,主要学习read_sql和to_sql的用法。...数据链接可以使用SQLAlchemy或者字符串。其他可选参数可以参考官方文档。 to_sql 这个函数的作用是,将dataframe的结果写入数据库。提供表名和连接名即可,不需要新建MySQL表。...用操作MySQL举例如下,需提前安装好sqlalchemy,pymysql,直接pip安装即可,需要注意engine的格式。...需要注意如果不加index=None参数,会把索引也写进去,多一列index。 pandas操作SQL我就抛砖引玉先写这么多,MySQL之外的其他数据库,也大同小异,用到的时候可以查一下相关资料。...系列第三篇,read_csv读取数据时,如果有两个需要解析的时间列,parse_dates参数可以写成一维列表的形式,但不能写成二维形式。二维情况适用于需要把两个或多个列合起来的情况。

    1.8K20

    基于招投标货物知识图谱全流程构建指南-数据存储

    我们为每条招投标公告设计一个表格,表格的列包括:标题:招标公告的标题。链接:公告详情页的 URL。发布日期:公告发布的时间。行业类型:项目所属行业(如市政工程、建筑工程)。辖区:项目所在的地理区域。...通过 Pandas 的 to_sql 方法,可以轻松地将这些数据存储到 MySQL 数据库中。我们使用了 DBUtils 和 SQLAlchemy 来管理数据库连接和操作。...engine: {e}") return None通过 SQLAlchemy 创建一个数据库引擎,用于与 MySQL 数据库交互。...except Exception as e: print(f"Error while inserting DataFrame: {e}")功能解读:to_sql 方法直接将 DataFrame...参数 if_exists="replace" 表示如果表已经存在,则替换;index=False 表示不保存 DataFrame 的索引列。通过异常处理,确保操作的安全性。

    58043

    短短几行代码将数据保存CSV和MySQL

    分享写入csv文件和写入mysql的方法,编码工作我一向追求代码的简单性。...注意事项: 1、一般情况下我们用utf-8编码进行保存,如果出现中文编码错误,则可以依次换用gbk,gb2312 , gb18030,一般总能成功的,本例中用gbk 2、to_csv方法,具体参数还有很多...from sqlalchemy import create_engine db_flag = "mysql" host_ip = "127.0.0.1" host_port = 3306 db_name...上面代码已经实现将我们构造的df数据保存MySQL,现在提一些注意点 注意事项: 1、我们用的库是sqlalchemy,官方文档提到to_sql是被sqlalchemy支持 文档地址: http://pandas.pydata.org...3个字段一一对应,正常保存,如果不设置为false的话,数据相当于4列,跟MySQL 3列对不上号,会报错 这里提个小问题,比如我们想在遍历的时候来一条数据,保存一条,而不是整体生成Dataframe后才保存

    2.1K20

    如何用Python自动操作数据库?

    安装和导入模块 以 Python 中的 SQLAlchemy 模块为例,配合使用其他第三方模块,SQLAlchemy 能够操作各种数据库,包括 Oracle、PostgreSQL、MySQL、SQLite...、SQL Server 等等,如果你还没有安装,可以通过以下命令进行安装: pip install sqlalchemy 要测试 SQLAlchemy 模块是否正确安装,可以在 Jupyter Lab...数据备份和删除表 有时候,我们还需要把数据备份到数据库中,如果直接使用 Pandas 的 to_sql 函数,那么字符串类型的列会被自动存储为 CLOB,这样后续处理起来就会比较麻烦。...我们可以用一个函数,实现自动转换为 NVARCHAR 类型: from sqlalchemy.types import NVARCHAR, Float, Integer # 映射数据中的列与数据类型,...比如说,从一个 MySQL 数据库中查询指定的数据,保存为 df,然后再附加到 Oracle 数据库中。 如果设置好相应的定时任务,就能实现用 Python 自动操作数据库,从而自动完成相关工作。

    88110

    【Python自动化】定时自动采集,并发送微信告警通知,全流程案例讲解!

    我原创开发了一套定时自动化爬取方案,完整开发流程如下:采集数据->筛选数据->存MySQL数据库->发送邮件->微信提醒->定时执行如果您现在苦于每天繁琐、重复的数据采集工作,可尝试套用该自动化方案,节省人力...,则存入数据,否则不存,continue进入下一轮循环,由此达成告警的目的。...3.2 存MySQL数据库如上所述,数据保存到csv文件作为临时存储,下面保存到MySQL数据库作为持久性存储。...我采用sqlalchemy和pandas的to_sql结合的方式,把csv数据快速导入MySQL数据库。...这样的简单3行代码,即实现了csv数据导入MySQL数据库的目的。注意,to_sql中的if_exists代表如果表中存在数据,那么replace覆盖原始数据,这样不会产生重复数据。

    56410

    【Python3】Flask SQLAlchemy 操作Mysql数据库

    一、安装 安装mysql,使用homebrew来安装 > brew install mysql # 随后根据提示配置数据库密码,是否禁止远程登陆,是否删除匿名用户等 由于SQLAlchemy没办法直接连接...、建立工程 使用Pycharm建立flask工程,工程名称:FlaskDemo 配置数据库访问路径,用户和密码,在工程根目录下的config.py文件中添加: # config.py # 配置 sqlalchemy...编码" SQLALCHEMY_DATABASE_URI = "mysql://root:root@localhost:5000/flaskdb" 这里配置了SQLAlchemy默认的mysql驱动,驱动与安装的数据库有关系...,列的关键字为id, primary_key=True表示该列数据作为主键, 类型为int,autoincrement=True自增 name = db.Column(db.String(64), unique...=True, index=True) 表示创建一列数据,列的关键字为name, 类型为string,最长长度为64位,unique=True表示唯一,index=True表示添加索引 那么,用户数据列表如下

    2.5K40

    Flask_数据库

    安装 pip install flask-sqlalchemy 如果连接是mysql,需要安装mysqldb pip install flask-mysqldb 数据库连接其他配置 名字 备注 SQLALCHEMY_DATABASE_URI...注意如果 使用了 MySQL , Flask-SQLALchemy 连接其他数据库 Postgres: postgresql://scott:tiger@localhost/mydatabase Mysql...列选项 选项名 说明 primary_key 如果为True,代表表的主键 unique 如果为True,代表这列不允许出现重复的值 index 如果为True,为这列创建索引,提高查询效率 nullable...如果为True,允许有空值,如果为False,不允许有空值 default 为这列定义默认值 SQLAlchemy 关系选项 选项名 说明 backref 在关系的另一模型中添加反向引用 primary...返回查询的第一个结果,如果未查到,返回None first_or_404() 返回查询的第一个结果,如果未查到,返回404 get() 返回指定主键对应的行,如不存在,返回None get_or_404

    1.3K50

    Flask 操作Mysql数据库 - flask-sqlalchemy扩展

    列选项 选项名 说明 primary_key 如果为True,代表表的主键 unique 如果为True,代表这列不允许出现重复的值 index 如果为True,为这列创建索引,提高查询效率 nullable...如果为True,允许有空值,如果为False,不允许有空值 default 为这列定义默认值 常用的SQLAlchemy关系选项 选项名 说明 backref 在关系的另一模型中添加反向引用 primary...常用的SQLAlchemy查询过滤器 过滤器 说明 filter() 把过滤器添加到原查询上,返回一个新查询 filter_by() 把等值过滤器添加到原查询上,返回一个新查询 limit 使用指定的值限定原查询返回的结果...get() 返回指定主键对应的行,如不存在,返回None get_or_404() 返回指定主键对应的行,如不存在,返回404 count() 返回查询结果的数量 paginate() 返回一个Paginate...In [5]: User.query.filter(User.name.endswith('g')).all() Out[5]: [, ] get(),参数为主键,如果主键不存在没有返回内容

    5.4K20

    Flask-SQLAlchemy操作数据库

    SQLAlchemy: https://www.sqlalchemy.org/ 安装 flask-sqlalchemy pip install flask-sqlalchemy 如果连接的是 mysql...配置对象的 **SQLALCHEMY_DATABASE_URI** 键中 app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:123456@...列选项 选项名 说明 primary_key 如果为True,代表表的主键 unique 如果为True,代表这列不允许出现重复的值 index 如果为True,为这列创建索引,提高查询效率 nullable...如果为True,允许有空值,如果为False,不允许有空值 default 为这列定义默认值 ### 常用的SQLAlchemy关系选项 选项名 说明 backref 在关系的另一模型中添加反向引用...常用的SQLAlchemy查询过滤器 过滤器 说明 filter() 把过滤器添加到原查询上,返回一个新查询 filter_by() 把等值过滤器添加到原查询上,返回一个新查询 limit() 使用指定的值限定原查询返回的结果

    1.5K20

    Flask 操作Mysql数据库 - flask-sqlalchemy扩展

    列选项 选项名 说明 primary_key 如果为True,代表表的主键 unique 如果为True,代表这列不允许出现重复的值 index 如果为True,为这列创建索引,提高查询效率 nullable...如果为True,允许有空值,如果为False,不允许有空值 default 为这列定义默认值 常用的SQLAlchemy关系选项 选项名 说明 backref 在关系的另一模型中添加反向引用 primary...常用的SQLAlchemy查询过滤器 过滤器 说明 filter() 把过滤器添加到原查询上,返回一个新查询 filter_by() 把等值过滤器添加到原查询上,返回一个新查询 limit 使用指定的值限定原查询返回的结果...get() 返回指定主键对应的行,如不存在,返回None get_or_404() 返回指定主键对应的行,如不存在,返回404 count() 返回查询结果的数量 paginate() 返回一个Paginate...: In [5]: User.query.filter(User.name.endswith('g')).all() Out[5]: [, ] get(),参数为主键,如果主键不存在没有返回内容

    21.3K22

    Flask入门第三天

    SQLAlchemy: https://www.sqlalchemy.org/ 安装 flask-sqlalchemy:pip install flask-sqlalchemy 如果连接的是 mysql...Flask配置对象的 **SQLALCHEMY_DATABASE_URI** 键中 app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql...列选项 primary_key:如果为True,代表表的主键 unique:如果为True,代表这列不允许出现重复的值 index:如果为True,为这列创建索引,提高查询效率 nullable:如果为...True,允许有空值,如果为False,不允许有空值 default:为这列定义默认值   2.4 常用的SQLALchemy关系选项 backref:在关系的另一模型中添加反向引用,用于设置外键名称,...要保存的表名称 app.config['SESSION_PERMANENT'] = True # 如果设置为True,则关闭浏览器session就失效。

    2.7K20

    【一周掌握Flask框架学习笔记】Flask中使用数据库(使用Flask-SQLAlchemy管理数据库)

    安装 flask-sqlalchemy pip install flask-sqlalchemy 如果连接的是mysql数据库,需要安装mysqldb pip install flask-mysqldb...注意如果 使用了 MySQL , Flask-SQLALchemy 自动设定 这个值为 2 小时。...列选项 选项名 说明 primary_key 如果为True,代表表的主键 unique 如果为True,代表这列不允许出现重复的值 index 如果为True,为这列创建索引,提高查询效率 nullable...如果为True,允许有空值,如果为False,不允许有空值 default 为这列定义默认值 常用的SQLAlchemy关系选项 选项名 说明 backref 在关系的另一模型中添加反向引用 primary...get() 返回指定主键对应的行,如不存在,返回None get_or_404() 返回指定主键对应的行,如不存在,返回404 count() 返回查询结果的数量 paginate() 返回一个Paginate

    4.4K20
    领券