python连接数据库

python连接db2的官方库ibm_db的api IBM_DBAPI 文档摘要 该文档详细介绍了 IBM_DBAPI 的核心功能和使用方法。主要内容包括: 连接管理:提供 connect/pconnect 建立连接,active 检查状态,close 关闭连接,以及错误处理函数 conn_error/conn_errormsg。 事务控制:包含 commit/rollback 事务操作,以及 autocommit 自动提交设置。 SQL执行:支持 exec_immediate 直接执行,prepare 预处理,execute 执行语句,execute_ma 阅读详情

参考python核心编程

编写一个用户洗牌的脚本,根据用户输入,选择连接sqlserver或者MySQL,创建数据库、表,随机生成数据,并实现增删改查。

其中,为了兼容python2和python3,统一了打印函数、录入函数、动态导包等

一些字段声明为全局变量,这样我们在后续的学习中,可以引用这些变量和函数。

ushuffle.py:

复制代码
#python 3.6
#统一输出函数,使用distutils.log.warn()函数代替版本2中的print语句和版本3中的print函数
from distutils.log import warn as printf
from random import randrange
#检测内置函数中是否包括raw_input(),如果存在说明版本是2(或者1),不存在说明是3。这样的话,无论是哪个版本,最终scanf函数表示了该功能
if isinstance(builtins,dict) and ‘raw_input’ in builtins:
scanf = raw_input
elif hasattr(builtins,‘raw_input’):
scanf = raw_input
else:
scanf = input

FIELDS = (‘login’,‘userid’,‘projid’)
COLSIZ = 10
RDBMSs = {‘s’:‘sql server’,‘m’:‘mysql’}
DBNAME = ‘test’
DB_EXC = None
DBUSER = ‘root’
DBSERVER = ‘127.0.0.1’
NAMELEN = 10

tformat = lambda s: str(s).title().ljust(COLSIZ)#str().title()将单词首字母大写;ljust()左对齐,并使用空格填充直至达到指定长度
cformat = lambda s: s.upper().ljust(COLSIZ) #

def setup():
return RDBMSs[scanf(’’’
请选择数据库类型:
(Sql) Server
(M)ySQL

请键入:''').strip().lower()[0]]

def connect(db,DBNAME):
global DB_EXC
dbDir = ‘%s_%s’ % (db,DBNAME)
if db == ‘mysql’:
try:
#python3.0以前的版本
import MySQLdb
import _mysql_exceptions as DB_EXC
try:
cxn = MySQLdb.connect(user = DBUSER,password = ‘Jwxjs123456’,db=DBNAME)
except DB_EXC.OperationalError:
try:
cxn = MySQLdb.connect(user = DBUSER,password = ‘Jwxjs123456’,db=DBNAME)
cxn.query(‘create database %s’ % DBNAME)
cxn.commit()
cxn.close()
cxn = MySQLdb.connect(db=DBNAME)
except DB_EXC.OperationalError:
return None
except ModuleNotFoundError: #ImportError
try:
#python3.0以上的版本
import pymysql
import pymysql.err as DB_EXC
try:
cxn = pymysql.connect({‘host’:DBSERVER,‘database’:DBNAME,‘user’:DBUSER,‘password’:‘Jwxjs123456’})
except DB_EXC.InternalError:
#连接成功但是没有指定的数据库
cxn = pymysql.connect(
{‘host’:DBSERVER,‘user’:DBUSER,‘password’:‘Jwxjs123456’})
cur = cxn.cursor()
cur.execute(‘create database %s;’ % DBNAME)
cxn.commit()
cxn = pymysql.connect({‘host’:DBSERVER,‘database’:DBNAME,‘user’:DBUSER,‘password’:‘Jwxjs123456’})
except ImportError:
return None
elif db == ‘sql server’:
import pymssql
import _mssql
#import pymssql.StandardError as DB_EXC
try:
cxn = pymssql.connect(
{‘server’:DBSERVER,‘database’:DBNAME,‘password’:‘Jwxjs123456’,‘user’:‘sa’})
printf(’ 成功链接数据库%s’ % DBNAME)
except BaseException:
#这里一定要设置为自动提交模式,否则创建数据库会失败
cxn = pymssql.connect(**{‘server’:DBSERVER,‘password’:‘Jwxjs123456’,‘user’:‘sa’,‘autocommit’:True})

        cursor = cxn.cursor()
        cxn.commit()
        cursor.execute('create database %s;' % DBNAME)
        #cxn.close()
        cxn = pymssql.connect(**{'server':DBSERVER,'database':DBNAME,'password':'Jwxjs123456','user':'sa','autocommit':True})
        printf('数据库%s 不存在,新建该数据库' % DBNAME)
return cxn

def create(cur):
try:
cur.execute(’’’
create table users(login varchar(%s),
userid int,
projid int
)
‘’’ % NAMELEN)
printf(’……………新建users表成功’)
except BaseException:
drop(cur)
create(cur)
printf(’ 已存在表users,删除后并新建此表……………………’)

drop = lambda cur:cur.execute(‘drop table users’)

NAMES =(
(‘arron’,8312),(‘angle’,7603),(‘dane’,7306),
(‘jess’,7912),(‘jim’,7512),(‘larry’,7311),
)

def randName():
pick = set(NAMES)#内置函数set()创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等
while pick:
yield pick.pop()

def insert(cur,db):
cur.executemany(‘insert into users values(%s,%s,%s)’,[(who,uid,randrange(1,5)) for who,uid in randName()])

#返回最后一次操作影响的行数,这里考虑右边对象是不是支持该属性,不支持的话则返回-1
getRC = lambda cur:cur.rowcount if hasattr(cur,‘rowcount’) else -1

def update(cur):
fr = randrange(1,5)
to = randrange(1,5)
cur.execute(‘update users set projid = %s where projid = %s’ % (to,fr))
return fr,to,getRC(cur)

def dbDump(cur):
cur.execute(‘select * from users’)
printf(’\n%s’ % ‘’.join(map(cformat,FIELDS)))
for data in cur.fetchall():
printf(’’.join(map(tformat,data)))#join()将序列中的元素以指定的字符连接生成一个新的字符串。

def delete(cur):
rm = randrange(1,5)
cur.execute(‘delete from users where projid = %s’ % rm)
return rm,getRC(cur)

drop = lambda cur:cur.execute(‘drop table users’)

def main():
#用户选择数据库类型
db = setup()
printf(’\n将要连接到 %s(%s) 数据库’ % (DBNAME,db))
#创建数据库连接
cxn = connect(db,DBNAME)
if not cxn:
printf(’\n 连接数据库%s(%s) 失败,程序退出!!!’ % (DBNAME,db))
return
else:
printf(’\n 成功连接数据库%s(%s) ’ % (DBNAME,db))
cur = cxn.cursor()
printf(’\n 创建 users表……’)
create(cur)

printf('\n*****初始化users表******')
insert(cur,db)
dbDump(cur)

printf('\n ***随机更改projid****')
fr,to,num = update(cur)
printf('\t(%s 个用户被更改了) from (%s) to(%s)' % (num,fr,to))
dbDump(cur)

printf('\n***随机删除某一组数据***')
rm,num = delete(cur)
printf('\t(组%s中共%s个用户被删除了)' % (rm,num))
dbDump(cur)

printf('\n*****删除users表*******')
drop(cur)

if db == 'mysql':
    cxn.commit() #sqlserver 的链接已经被设置为自动提交
printf('\n    关闭数据库连接     ')
cxn.close()

if name == ‘main’:
main()
复制代码
运行结果如下:

Python连接DB2数据库基本 简单使用如下,详细项目看另外一篇。注意事项:1、就是一定记得要关闭连接。2、读取数据只能一行一行读取,需要result = ibm_db.fetch_both(stmt)代码在调下一行#-*-coding-*- import ibm_db import time conn = i 阅读详情

相关推荐

保姆级教程:用Intouch SMC连接S7-200 Smart PLC,Modbus TCP和S7协议一次搞定

本文详细介绍了如何使用Intouch SMC连接S7-200 Smart PLC,涵盖Modbus TCP和S7协议的双协议通信配置。通过环境准备、参数设置、常见问题排查及实战技巧,帮助工程师快速实现工业自动化系统中的稳定通信,提升设备监控效率。

weixin_30499315的博客 431

python函数

函数的定义与调用:使用def关键字来定义 语法格式: # 函数的定义 def 函数名 ([参数列表]): #[参数列表]可以包含一个或多个参数也可以为空 函数体 # 实现函数功能的具体代码 return # 可忽略 # 函数的调用 函数名([参数列表]) 计算两个数之和的函数: # 无参函数 def add(): result = 11 + ...

m0_58460447的博客 1077

STM32 CubeMX LwIP + freertOS 移植

生成代码,烧录即可ping通。这里要注意的是,要修改freertOS的任务栈大小,默认128,修改为1024,不修改就跑不起来。生产代码,下载进开发板。开发板网口与电脑网口通过网线直连,设置电脑本地网卡在同一网段。在以上无系统的cubeMX配置下继续添加freertOS。无系统LWIP协议栈设置,静态IP地址,关闭DHCP。先用裸机测试LAN8742A的网卡驱动。MCU型号:STM32F746NGH。下面进行freertOS系统移植。网卡型号:LAN8742A。系统时钟和时基定时器如下。

u011625775的博客 1374

Python学习笔记--函数参数的详解

函数参数的详解前言位置参数关键字参数参数默认值可变参数小结 前言 def add(a, b): return a + b 定义一个函数,之后去调用他,可以发现调用的时候传入的参数个数需要和定义的时候匹配,如果不匹配就会报错,无论时参数多了还是少了。 位置参数 >>> def add(a, b): ... ret = a + b ... print('{}...

weixin_42726818的博客 321

基于紫光展锐平台的音频调用到hal层逻辑

基于紫光展锐平台的音频调用到hal层逻辑 1、数据流程图 AudioPolicyService和AudioFlinger的创建: 这两个服务都在audioserver中启动,文件路径: frameworks/av/media/audioserver/main_audioserver.cpp 从AudioFlinger和AudioPolicyService的创建,到output的打开,以及AudioFlinger开始往底层写入数据的具体流程如下图: #mermaid-svg-kjHL4XWwkQXN6NdA

weixin_55053963的博客 1355

告别代码移植烦恼:STM32CubeMX 6.4.0 + STM32F407ZGT6 + YT8512C PHY芯片的LWIP网络配置全攻略

本文详细介绍了如何使用STM32CubeMX 6.4.0配置STM32F407ZGT6与YT8512C PHY芯片的LWIP网络适配,包括硬件特性解析、STM32CubeMX基础配置、专用驱动适配和LWIP协议栈定制化配置,帮助开发者解决PHY芯片差异导致的网络问题。

weixin_28718793的博客 290

Python连接数据库的N种方法

在选择连接数据库的方法时,需要考虑项目的需求、规模和开发人员的经验。Python作为一种高级编程语言,提供了简单且有效的方法来连接各种类型的数据库,使得开发者可以轻松地进行数据操作和管理。无论是使用标准库、第三方库还是ORM框架,都可以轻松地连接各种类型的数据库,并进行高效的数据操作和管理。在Python中,连接数据库的方法多种多样,但主要分为三类:使用标准库、使用第三方库和使用ORM框架。ORM框架将数据库中的表映射为Python中的对象,简化了数据库操作,并提供了更加面向对象的编程方式。

繁依Fanyi的博客 4367

SAP成本核算变式OKKN配置详解:从CK11N到CK24,手把手教你搞定标准成本发布

本文深入解析SAP成本核算变式OKKN的配置原理与实战应用,涵盖从CK11N到CK24的标准成本发布全流程。详细讲解数量结构控制、价值结构配置及间接费用计算规则,帮助成本会计精准掌握标准成本计算逻辑,解决BOM版本选择、工艺路线获取等常见问题,提升企业成本管理效率。

weixin_27219587的博客 286

Python如何连接数据库,5步教会你 !

Python所有方向的学习路线图,清楚各个方向要学什么东西600多节Python课程视频,涵盖必备基础、爬虫和数据分析100多个Python实战案例,含50个超大型项目详解,学习不再是只会理论爬虫与反爬虫攻防教程包,含15个大型网站迫解超300本Python电子好书,从入门到高阶应有尽有华为出品独家Python漫画教程,手机也能学习历年互联网企业Python面试真题,复习时非常方便。

python03012的博客 1万+

YOLOv11模型改进-模块-引入特征细化模块FRFN 解决小目标、遮挡等问题

FRFN 是一种专门设计的深度学习结构,旨在提高图像处理任务中的特征表示能力。它的核心设计理念是通过逐层细化和优化特征图,从而实现更高的分类和检测精度。1. 特征提取层:通过卷积层提取初始特征,并进行批量归一化以增强稳定性。2. 特征细化模块:在每个模块中,当前层特征图与前一层特征图进行融合,以强化特征表示。3. 跳跃连接:通过跳跃连接保留多尺度信息,帮助缓解深层网络中的信息丢失。4. 非线性激活:使用激活函数(如ReLU)增加模型的非线性能力。5. 输出层。

qq_64693987的博客 3337

12、有杆泵抽油系统:原理、性能与选择

本文全面介绍了有杆泵抽油系统的原理、性能分析和设备选择方法。有杆泵抽油系统广泛应用于石油开采领域,通过地面抽油装置与井下柱塞泵的配合,实现高效、稳定的原油提升。文章详细解析了系统的工作原理、组成结构、光杆运动特性、载荷计算、泵输送能力及功率需求,并提供了抽油装置的选择流程和实际案例分析。此外,还探讨了泵的容积效率影响因素、示功图的作用及系统优化运行的建议,为石油开采工程提供了理论支持和实践指导。

gan8painter的博客 433

Python连接数据库——DB-API的使用流程

一、Python中的BD-API 1、出现背景 在没有DB-API之前,接口程序混乱。具体的就是说,由于最底层用的数据库技术不同,所以在应用程序层就要针对特定的数据库进行特定的编码,如果要改变一个版本所使用的底层数据库,那么之前编写的应用程序中关于数据库的代码也要进行相应的改变。 2、详解 python DB-API:python访问数据库的统一接口规范。 这里有一个约定...

AFeng521web 1万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Python通过ibm_db模块进行DB2数据库连接

- 下载ibm_db模块 具体安装步骤自行百度 然后import ibm_db进行模块导入 连接到DB2数据库 语句 描述 ibm_db.connect() 创建非持久连接 ibm_db.pconnect() 创建持久连接。对于持久连接,Python请求之间的连接保持打开状态,如果后续的Python脚本请求具有相同的凭证集,则允许重用连接 代码示例: # 导入ibm...

weixin_42970378的博客 7222

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

python db-api的使用流程_Python连接数据库学习之DB-API详解

在没有 Python DB-API 之前,各数据库之间的应用接口非常混乱,实现各不相同。如果项目需要更换数据库时,则需要做大量的修改,非常不便。Python DB-API 的出现就是为了解决这样的问题。本文主要介绍了Python连接数据库之DB-API的相关资料,需要的朋友可以参考。前言大家都知道在Python中如果要连接数据库,不管是MySQL、SQL Server、PostgreSQL亦或是S...

weixin_34580441的博客 964

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

python db api下载_Python连接数据库学习之DB-API详解

前言大家都知道在Python中如果要连接数据库,不管是MySQL、SQL Server、PostgreSQL亦或是SQLite,使用时都是采用游标的方式,所以就不得不学习Python DB-API。Python所有的数据库接口程序都在一定程度上遵守 Python DB-API 规范。DB-API定义了一系列必须的对象和数据库存取方式,以便为各种底层数据库系统和多种多样的数据库接口程序提供一致的访问...

weixin_39998859的博客 357

python db-api的使用流程_Python连接数据库——DB-API的使用流程

一、Python中的BD-API1、出现背景在没有DB-API之前,接口程序混乱。具体的就是说,由于最底层用的数据库技术不同,所以在应用程序层就要针对特定的数据库进行特定的编码,如果要改变一个版本所使用的底层数据库,那么之前编写的应用程序中关于数据库的代码也要进行相应的改变。 2、详解python DB-API:python访问数据库的统一接口规范。 这里有一个约定:程序员使用python与...

weixin_30100299的博客 745

python通过connect对象连接数据库对吗_Python连接数据库学习之DB-API详解

前言大家都知道在Python中如果要连接数据库,不管是MySQL、SQL Server、PostgreSQL亦或是SQLite,使用时都是采用游标的方式,所以就不得不学习Python DB-API。Python所有的数据库接口程序都在一定程度上遵守 Python DB-API 规范。DB-API定义了一系列必须的对象和数据库存取方式,以便为各种底层数据库系统和多种多样的数据库接口程序提供一致的访问...

weixin_39761255的博客 1192

python通过connect对象连接数据库对吗_Python连接数据库之DB-API

在Python中如果要连接数据库,不管是 MySQL、 SQL Server、 PostgreSQL亦或是SQLite,使用时都是采用游标的方式,所以就不得不学习Python DB-API。Python所有的数据库接口程序都在一定程度上遵守 Python DB-API 规范。DB-API定义了一系列必须的对象和数据库存取方式,以便为各种底层数据库系统和多种多样的数据库接口程序提供一致的访问接...

weixin_39823299的博客 354

python 的DB连接

import pymysql config = { 'host': 'xxx.xx.xx.xxx', 'user': 'xxxx', 'pw': 'xxxxx', 'dbname': 'xxxxx' } # 数据库连接 db = pymy...

日常博客 1482

Database Connectivity using Python使用 Python 进行数据库连接

MySQL 数据库的默认用户名是 root - 密码 - 用户在安装 MySQL 数据库时给出的密码。- 结果集是指通过执行 SQL 查询从数据库中获取的逻辑记录集。) • PyMySQL • mysqlclient • MySQLDB • OurSQL Python 与 MySQL 的集成 Python 中共有 5 个模块可用于与 MySQL 通信• MySQL Connector Python (重点) • PyMySQL • mysqlclient • MySQLDB • OurSQL。

weixin_74400487的博客 2009

3MySQL数据库-连接python-实现DB类 - 全栈式开发30

MySQL与Python交互 一、关系图 二、python实现操作数据库 安装pymysql : pip install pymysql 操作步骤 (一)connect() 建立链接 ⽤于建⽴与数据库的连接 conn=connect(host, port, database, user, password, charset) host:连接的mysql主机,如果本机是’localhost’ 或者填‘127.0.0.1’ port:连接的mysql主机的端⼝,默认是3306 database:数据

weixin_43761516的博客 311

python连接什么数据库比较好_python连接数据库哪种好

python连接数据库推荐使用MySQLdb。Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库:GadFlymSQLMySQLPostgreSQLMicrosoft SQL Server 2000 InformixInterbase Oracle Sybase不同的数据库你需要下载不同的DB API模块,例如你需要访问Oracle数据库和Mysql数据,你需要下载Oracl...

weixin_39926943的博客 721
上一篇: TypeError: a bytes-like object is required, not 'str'
下一篇: 程序下载微云
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值