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 阅读详情

相关推荐

Android13配置selinux让system应用可读sys,proc,SN号

Android13预置的system应用,需要读/sys, /proc目录,读(SN)serial number号, 需要修改selinux配置,否则会报avc错.其修改方法会比Android11复杂一些.。

zmlovelx(帅得不敢出门 程序员群31843264) 2654

python函数

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

m0_58460447的博客 1077

傻白入门芯片设计,芯片键合(Die Bonding)(四)

傻白入门芯片设计,芯片键合(Die Bonding)(四) 引线键合、倒装芯片键合、管脚贴合技术

qq_46675545的博客 3万+

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

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

weixin_42726818的博客 321

arduino esp8266_Arduino传感器教程 第22章ESP8266 控制 5V 继电器

ESP8266控制5V继电器目录一、NodeMCU二、工作原理本文将使用亚马逊 AlexaEcho 和 ESP8266 控制 5V 继电器。NodeMCUNodeMCU 是一个开源的 IoT 物联网硬件开发板,由于它支持 WIFI 功能且使用方法十分类似 Arduino 开发板,所以近些年获得了越来越多来自全世界的创客朋友们的青睐。NodeMCU 尺寸与 Arduino Nano 类似。...

weixin_39611722的博客 3455

告别懵圈!用CANoe手把手解析ISO15765多帧传输(附实战报文分析)

本文详细解析了ISO15765多帧传输协议在汽车电子诊断中的应用,通过CANoe实战演示了从首帧发送到流控协商再到连续帧传输的完整流程。文章包含嵌入式系统诊断协议的深度分析,特别适合UDS和CAN总线开发人员学习多帧传输机制及常见问题解决方案。

weixin_30813225的博客 281

Python连接数据库的N种方法

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

繁依Fanyi的博客 4367

AAAI2024最佳解读|FontDiffuser One-Shot Font Generation via Denoising Diffusion with Multi-Scal

本文提出了一种名为FontDiffuser的基于扩散的单次字体生成方法,旨在通过去噪扩散模型生成模仿参考图像风格的字体,同时保留源图像的内容。尽管现有的字体生成方法在性能上取得了一定的进展,但在处理复杂字符和大风格变化时仍面临挑战。FontDiffuser通过引入多尺度内容聚合(MCA)模块,有效结合不同尺度的全局和局部内容线索,从而增强复杂字符的笔画保留能力。此外,文章还提出了一种风格对比细化(SCR)模块,用于风格表示学习,利用风格提取器从图像中分离风格,并通过精心设计的风格对比损失来监督扩散模型。

haimianxiaobao11的博客 1190

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

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

python03012的博客 1万+

全志平台camera驱动开发(4)NVP6134芯片4路模拟视频BT656输入

前言 1. 调试平台: 全志V5/T7等有BT656或BT1120的并行接口,理论有DVP接口的一般都支持 2. NVP6134可使用多路视频同时输入 硬件连接 模拟camera1 模拟camera2 NVP6134 ------>NVCSI0 ...

jzwjzw19900922的博客 3531

基于Qt的工业组态软件开发:图形绘制与TCP通讯实现

在数据接收时,通过 readyRead 信号触发解析函数,校验数据包完整性后提取有效数据,并更新对应图形元素的状态,例如根据温度值改变矩形的填充色,实现设备状态可视化。测试阶段,我们将软件部署到Windows工控机,连接PLC设备进行通讯测试,结果表明图形元素响应及时,TCP数据传输稳定,满足工业现场的基本需求。综上所述,基于Qt的组态软件开发,核心在于利用 QGraphicsView 框架实现图形元素的灵活绘制与管理,结合 QTcpSocket 完成工业数据的可靠交互。

谢谢大家的关注和点赞!这里只有纯纯的知识干货,没有一句废话。希望能实实在在帮到大家~要是觉得有用,别忘了给我点支持哟,你 272

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

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

AFeng521web 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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

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

weixin_42970378的博客 7222

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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

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

weixin_34580441的博客 964

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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、付费专栏及课程。

余额充值