如何用Python自动操作数据库?
林骥
共 3248字,需浏览 7分钟
· 2020-11-22
你好,我是林骥。
技术其实分为术和道两种,具体的做事方法是术,做事的原理和原则是道。
pip install sqlalchemy
# 导入库
import sqlalchemy as sa
# 查看 SQLAlchemy 版本
sa.__version__
pip install cx_Oracle
from sqlalchemy import create_engine
# 创建数据库引擎
engine = create_engine('oracle://user:password@ip_address:1521/orcl')
# 连接数据库
con = engine.connect()
# 执行创建表的 SQL 语句
sql = 'create table usr(id integer, name varchar2(50))'
con.execute(sql)
# 增
con.execute("insert into usr(id, name) values(1, 'Jim')")
con.execute("insert into usr(id, name) values(2, 'Joe')")
# 删
con.execute('delete from usr where id = 1')
# 改
con.execute("update usr set name = 'Jack' where id = 2")
# 查
sql = 'select id, name from usr where id = :id'
import pandas as pd
df = pd.read_sql(sa.text(sql), engine, params={'id': 2})
df
from sqlalchemy.types import NVARCHAR, Float, Integer
# 映射数据中的列与数据类型,避免存为 CLOB
def mapping_df_types(df):
dtypedict = {}
for i, j in zip(df.columns, df.dtypes):
if "object" in str(j):
dtypedict.update({i: NVARCHAR(length=255)})
if "float" in str(j):
dtypedict.update({i: Float(precision=2, asdecimal=True)})
if "int" in str(j):
dtypedict.update({i: Integer()})
return dtypedict
# 把数据备份到数据库,替换现有表,如果把 replace 换成 append,那么就是附加数据
dtypedict = mapping_df_types(df)
df.to_sql('usr_backup', engine, index=False, if_exists='replace', dtype=dtypedict)
# 删除表
con.execute('drop table usr')
con.execute('drop table usr_backup')
# 关闭数据库连接
con.close()
往期推荐
评论
盘点Lombok的几个骚操作,你绝对没用过!
👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目 2.0 版本完结啦, 演示链接:http://116.62.199.48/ ,新项目正在酝酿中
小哈学Java
0
谷歌员工爆料Python基础团队原地解散
机器之心报道编辑:蛋酱什么?谷歌解雇了整个 Python 基础团队?「当与你直接共事的每个人,包括你的主管,都被裁员 —— 哦,是职位被削减,而你被要求安排他们的替代者入职,这些人被告知在不同的国家担任同样的职位,但他们并不为此感到高兴,这是很艰难的一天。」发布这一动态的 Thomas Wouter
机器学习初学者
0
架构应该如何来理解?
来源:zhuanlan.zhihu.com/p/141027477👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目 2.0 版本完结啦, 演示链接:htt
小哈学Java
0
牛逼啊,几乎涵盖了SpringCloud所有操作
前言Spring Cloud Alibaba为分布式应用开发提供了一站式解决方案。它包含开发分布式应用程序所需的所有组件,可以轻松地使用Spring Cloud开发应用程序。使用Spring Cloud Alibaba,只需添加一些注解和少量配置,即可将Spring Cloud应用连接到Alibab
java团长
0
Go早期是如何在Google内部发展起来的
2007年Go诞生于Google,2009年Google正式对外宣布了Go语言的开源!时至今日,距离Go开源已经过去了近15个年头了[1]!Go在Google公司内部究竟是怎样的一个状态呢?前Google员工Yves Junqueira近期撰文从其个人所见所闻谈了Go在Google的历程[2]!这里
GoCN
0
盘点一个使用超级鹰识别验证码并自动登录的案例
点击上方“Python共享之家”,进行关注回复“资源”即可获赠Python学习资料今日鸡汤江上几人在,天涯孤棹还。大家好,我是皮皮。一、前言前几天在Python钻石交流群【静惜】问了一个Python实现识别验证码并自动登录的问题,提问截图如下:验证码的截图如下所示:二、实现过程这里大家激烈的探讨,【
IT共享之家
0
Python列表知识应知应会
点击上方“Go语言进阶学习”,进行关注回复“Go语言”即可获赠从入门到进阶共10本电子书今日鸡汤只在此山中,云深不知处。一、前言 在Python程序开发中,列表(List)经常会使用。假设一个班里有50个学生现需要统计每一个学生的总成绩情况,如果不使用列
Go语言进阶学习
0
Python 字符串应该用双引号还是单引号?
转载来源:洪尔摩斯PyCharm升级至 2023.2版本后,经常弹出来一个提示问我要不要试一下Black formatter。试了一下,这个Black formatter 很有个性,特别喜欢换行。我的一个文件用PyCharm自带的代码整理器整理完之后是500行左右,然后再用Black整理就变成600
菜鸟学Python
0