Python pyodbc操作sqlserver数据库入门

本文主要记录,在python3 中,connect.commit()cursor.commit()都是用于将事务的更改应用到数据库的方法,但它们的作用范围和用法有所不同。

connect.commit():这个方法是在数据库连接对象(通常是由connect()函数返回的对象)上调用的。它将提交当前连接的所有未提交的事务更改,并将其应用到数据库上。这意味着连接对象上的所有游标都将受到影响,包括之前创建的和之后创建的游标。

举例说明:

import sqlite3

# 连接到SQLite数据库
conn = sqlite3.connect('mydatabase.db')

# 创建一个游标对象
cursor = conn.cursor()

# 执行一些SQL语句
cursor.execute("INSERT INTO Author (name, address) VALUES ('John', '123 Street')")
#或者这样写
   cursor.execute("INSERT INTO Author (name, address "
                   "VALUES (?, ?,)", 'John', '123 Street')

# 提交更改到数据库
conn.commit()

# 关闭连接
conn.close()

在上面的例子中,conn.commit()将提交插入操作到数据库。

cursor.commit():这个方法是在游标对象上调用的。它只会提交当前游标的未提交的事务更改,并将其应用到数据库上。其他在相同连接上创建的游标不会受到影响。

举例说明:

import sqlite3

# 连接到SQLite数据库
conn = sqlite3.connect('mydatabase.db')

# 创建一个游标对象
cursor = conn.cursor()

# 执行一些SQL语句
cursor.execute("INSERT INTO Author(name, address) VALUES ('John', '123 Street')")

# 提交游标的更改到数据库
cursor.commit()

# 关闭连接
conn.close()
  1. 在上面的例子中,cursor.commit()只会提交当前游标的插入操作到数据库,其他游标的更改不会被提交。

  • connect.commit()提交连接对象上所有游标的更改到数据库。
  • cursor.commit()只提交当前游标的更改到数据库。

例如下面的demo, 只是提交 了cursor1,cursor2没提交,就会导致有问题,cursor2对应的数据未入库,这种请求就需要使用 cnxn.commit()

def inserttoDb():
    connectionStr = db.createDBConnection()
    cnxn = pyodbc.connect(connectionStr)
    cursor1 = cnxn.cursor()
    user=('zhoujin','www.zhoujin.com',11,1)
    cursor1.execute("INSERT INTO Author (Author, AuthorProfileUrl,AuthorSinceYear,TipContribution) "
                   "VALUES (?, ?, ?, ?)", user[0], user[1], user[2], user[3])
    #使用事务提交到数据库
    cursor1.commit()
    cursor1.close()

    cursor2 = cnxn.cursor()
    user=('duantiao','www.duantiao.com',11,1)
    cursor2.execute("INSERT INTO Author (Author, AuthorProfileUrl,AuthorSinceYear,TipContribution) "
                   "VALUES (?, ?, ?, ?)", user[0], user[1], user[2], user[3])
    #使用事务提交到数据库
    cursor2.close()
    # cnxn.commit()
    db.closeDBConnection(cnxn)

inserttoDb()

python3 操作多条sql批量入库操作方式

def insertMultipletoDb():
    connectionStr = db.createDBConnection()
    cnxn = pyodbc.connect(connectionStr)
    cursor1 = cnxn.cursor()
    user=('caogao','www.caogao.com',11,1)
    cursor1.execute("INSERT INTO Author (Author, AuthorProfileUrl,AuthorSinceYear,TipContribution) VALUES ('caogao3', 'www.caogao3.com', '11', '2');"
                   "INSERT INTO Author (Author, AuthorProfileUrl,AuthorSinceYear,TipContribution) VALUES ('caogao4', 'www.caoga4.com', '11', '2');"
                    "INSERT INTO Author (Author, AuthorProfileUrl,AuthorSinceYear,TipContribution) VALUES ('caogao5', 'www.caogao5.com', '11', '2');"
                    "INSERT INTO Author (Author, AuthorProfileUrl,AuthorSinceYear,TipContribution) VALUES ('caogao6', 'www.caogao6.com', '11', '2');")

    #使用事务提交到数据库
    cursor1.commit()
    cursor1.close()
    cnxn.commit()
    db.closeDBConnection(cnxn)

python 3批量实现sql更新入库操作,并且记录行号

def updateMultipletoDb():
    connectionStr = db.createDBConnection()
    cnxn = pyodbc.connect(connectionStr)
    cursor1 = cnxn.cursor()
    user=('caogao','www.caogao.com',11,1)
    count=cursor1.execute("update Author set Author= CONCAT(Author,'_1') , AuthorProfileUrl= AuthorProfileUrl where  Author='caogao';"
                          "update Author set Author= CONCAT(Author,'_2') , AuthorProfileUrl= AuthorProfileUrl where  Author='caogao1';")

    #使用事务提交到数据库
    print(count.rowcount)
    cursor1.commit()
    cursor1.close()
    cnxn.commit()
    db.closeDBConnection(cnxn)

updateMultipletoDb()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值