欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Python對(duì)Access讀寫(xiě)操作

 更新時(shí)間:2017年03月30日 17:31:44   作者:騎著螞蟻流浪  
學(xué)習(xí)Python的過(guò)程中,我們會(huì)遇到Access的讀寫(xiě)問(wèn)題,這時(shí)我們可以利用win32.client模塊的COM組件訪問(wèn)功能,通過(guò)ADODB操作Access的文件。下面跟著小編一起來(lái)看下吧

學(xué)習(xí)Python的過(guò)程中,我們會(huì)遇到Access的讀寫(xiě)問(wèn)題,這時(shí)我們可以利用win32.client模塊的COM組件訪問(wèn)功能,通過(guò)ADODB操作Access的文件。

需要下載安裝pywin32與AccessDatabaseEngine.exe

pywin32下載地址:http://www.dbjr.com.cn/softs/695840.html

AccessDatabaseEngine.exe下載 http://www.dbjr.com.cn/softs/291508.html

64位下載:http://www.dbjr.com.cn/softs/291504.html

1、導(dǎo)入模塊

import win32com.client

2、建立數(shù)據(jù)庫(kù)連接

conn = win32com.client.Dispatch(r"ADODB.Connection")
DSN = 'PROVIDER = Microsoft.Jet.OLEDB.4.0;DATA SOURCE = test.mdb'
conn.Open(DSN)

3、打開(kāi)一個(gè)記錄集

rs = win32com.client.Dispatch(r'ADODB.Recordset')
rs_name = 'MEETING_PAPER_INFO'
rs.Open('[' + rs_name + ']', conn, 1, 3)

4、對(duì)記錄集操作

rs.AddNew() #添加一條新記錄
rs.Fields.Item(0).Value = "data" #新記錄的第一個(gè)記錄為"data"
rs.Update() #更新

5、用SQL語(yǔ)句來(lái)增、刪、改數(shù)據(jù)

# 增
sql = "Insert Into [rs_name] (id, innerserial, mid) Values ('002133800088980002', 2, '21338')" #sql語(yǔ)句
conn.Execute(sql) #執(zhí)行sql語(yǔ)句
# 刪
sql = "Delete * FROM " + rs_name + " where innerserial = 2"
conn.Execute(sql)
# 改
sql = "Update " + rs_name + " Set mid = 2016 where innerserial = 3"
conn.Execute(sql)

6、遍歷記錄

rs.MoveFirst() #光標(biāo)移到首條記錄
count = 0
while True:
 if rs.EOF:
 break
 else:
 for i in range(rs.Fields.Count):
 #字段名:字段內(nèi)容
 print(rs.Fields[i].Name, ":", rs.Fields[i].Value)
 count += 1
 rs.MoveNext()

7、關(guān)閉數(shù)據(jù)庫(kù)

conn.close()

補(bǔ)充

如果是python3好像需要用到pypyodbc

# 話不多說(shuō),碼上見(jiàn)分曉!

使用模塊: pypyodbc

例子和安裝詳見(jiàn):

https://github.com/jiangwen365/pypyodbc/

#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = "loki"
import time
import pypyodbc as mdb

# 連接mdb文件
connStr = (r'Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\MDB_demo\demo.mdb;'
   r'Database=bill;'
   )
conn = mdb.win_connect_mdb(connStr)

# connStr = (
#  r'Driver={SQL Sever};'
#  r'Server=sqlserver;'
#  r'Database=bill;'
#  r'UID=sa;'
#  r'PWD=passwd'
# )
#
# conn = mdb.connect(connStr)
# 創(chuàng)建游標(biāo)
cur = conn.cursor()

cur.execute('SELECT * FROM bill;')

for col in cur.description:
 # 展示行描述
 print(col[0], col[1])
result = cur.fetchall()

for row in result:
 # 展示個(gè)字段的值
 print(row)
 print(row[1], row[2]

官方給的例子mdb

# Microsoft Access DB
import pypyodbc 

connection = pypyodbc.win_create_mdb('D:\\database.mdb')

SQL = 'CREATE TABLE saleout (id COUNTER PRIMARY KEY,product_name VARCHAR(25));'
connection.cursor().execute(SQL)
connection.close()

#SQL Server 2000/2005/2008 (and probably 2012 and 2014)

#SQL Server 2000/2005/2008 (and probably 2012 and 2014)
import pypyodbc as pyodbc # you could alias it to existing pyodbc code (not every code is compatible)
db_host = 'serverhost'
db_name = 'database'
db_user = 'username'
db_password = 'password'
connection_string = 'Driver={SQL Server};Server=' + db_host + ';Database=' + db_name + ';UID=' + db_user + ';PWD=' + db_password + ';'
db = pyodbc.connect(connection_string)
SQL = 'CREATE TABLE saleout (id COUNTER PRIMARY KEY,product_name VARCHAR(25));'
db.cursor().execute(SQL)

# Doing a simple SELECT query
connStr = (
 r'Driver={SQL Server};'
 r'Server=sqlserver;'
 #r'Server=127.0.0.1,52865;' +
 #r'Server=(local)\SQLEXPRESS;'
 r'Database=adventureworks;'
 #r'Trusted_Connection=Yes;'
 r'UID=sa;'
 r'PWD=sapassword;'
 )
db = pypyodbc.connect(connStr)
cursor = db.cursor()

# Sample with just a raw query:
cursor.execute("select client_name, client_lastname, [phone number] from Clients where client_id like '01-01-00%'")

# Using parameters (IMPORTANT: YOU SHOULD USE TUPLE TO PASS PARAMETERS)
# Python note: a tuple with just one element must have a trailing comma, otherwise is just a enclosed variable
cursor.execute("select client_name, client_lastname, [phone number] "
"from Clients where client_id like ?", ('01-01-00%', ))

# Sample, passing more than one parameter
cursor.execute("select client_name, client_lastname, [phone number] "
"from Clients where client_id like ? and client_age < ?", ('01-01-00%', 28))

# Method 1, simple reading using cursor
while True:
 row = cursor.fetchone()
 if not row:
  break
 print("Client Full Name (phone number): ", row['client_name'] + ' ' + row['client_lastname'] + '(' + row['phone number'] + ')')

# Method 2, we obtain dict's all records are loaded at the same time in memory (easy and verbose, but just use it with a few records or your app will consume a lot of memory), was tested in a modern computer with about 1000 - 3000 records just fine...
import pprint; pp = pprint.PrettyPrinter(indent=4)
columns = [column[0] for column in cursor.description]
for row in cursor.fetchall():
 pp.pprint(dict(zip(columns, row)))

# Method 3, we obtain a list of dict's (represents the entire query)
query_results = [dict(zip([column[0] for column in cursor.description], row)) for row in cursor.fetchall()]
pp.pprint(query_results)

# When cursor was used must be closed, if you will not use again the db connection must be closed too.
cursor.close()
db.close()

How to use it without install (the latest version from here)

Just copy the latest pypyodbc.py downloaded from this repository on your project folder and import the module.

Install
If you have pip available (keep in mind that the version on pypi may be old):

pip install pypyodbc

Or get the latest pypyodbc.py script from GitHub (Main Development site)

python setup.py install

以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!

相關(guān)文章

  • Python+OpenCV之圖像梯度詳解

    Python+OpenCV之圖像梯度詳解

    這篇文章主要為大家詳細(xì)介紹了Python OpenCV中圖像梯度(Sobel算子、Scharr算子和Laplacian算子)的實(shí)現(xiàn),感興趣的小伙伴可以了解一下
    2022-09-09
  • Python中如何實(shí)現(xiàn)MOOC掃碼登錄

    Python中如何實(shí)現(xiàn)MOOC掃碼登錄

    這篇文章主要介紹了Python中如何實(shí)現(xiàn)MOOC掃碼登錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • scrapy+flask+html打造搜索引擎的示例代碼

    scrapy+flask+html打造搜索引擎的示例代碼

    本文主要介紹了scrapy+flask+html打造搜索引擎的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 基于numpy中的expand_dims函數(shù)用法

    基于numpy中的expand_dims函數(shù)用法

    今天小編就為大家分享一篇基于numpy中的expand_dims函數(shù)用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • pymongo給mongodb創(chuàng)建索引的簡(jiǎn)單實(shí)現(xiàn)方法

    pymongo給mongodb創(chuàng)建索引的簡(jiǎn)單實(shí)現(xiàn)方法

    這篇文章主要介紹了pymongo給mongodb創(chuàng)建索引的簡(jiǎn)單實(shí)現(xiàn)方法,涉及Python使用pymongo模塊操作mongodb的技巧,需要的朋友可以參考下
    2015-05-05
  • Python中的__SLOTS__屬性使用示例

    Python中的__SLOTS__屬性使用示例

    這篇文章主要介紹了Python中的__SLOTS__屬性使用示例,本文直接給出代碼示例,需要的朋友可以參考下
    2015-02-02
  • pandas常用表連接merge/concat/join/append詳解

    pandas常用表連接merge/concat/join/append詳解

    使用python的pandas庫(kù)可以很容易幫你搞定,而且性能也是很出色的;百萬(wàn)級(jí)的表關(guān)聯(lián),可以秒出,本文給大家分享pandas常用表連接merge/concat/join/append詳解,感興趣的朋友跟隨小編一起看看吧
    2023-02-02
  • python實(shí)現(xiàn)求最長(zhǎng)回文子串長(zhǎng)度

    python實(shí)現(xiàn)求最長(zhǎng)回文子串長(zhǎng)度

    最長(zhǎng)回文子串問(wèn)題:給定一個(gè)字符串,求它的最長(zhǎng)回文子串長(zhǎng)度。如果一個(gè)字符串正著讀和反著讀是一樣的,那它就是回文串。今天我們就來(lái)探討下這個(gè)問(wèn)題
    2018-01-01
  • Python操作word文檔的示例詳解

    Python操作word文檔的示例詳解

    本文為大家介紹了Python操作docx文檔相關(guān)知識(shí)點(diǎn)。主要涉及的內(nèi)容為python-docx?,一款可以操作Word文檔(僅支持docx)的第三方庫(kù)??旄S小編一起學(xué)習(xí)一下吧
    2022-01-01
  • Python實(shí)現(xiàn)的遠(yuǎn)程文件自動(dòng)打包并下載功能示例

    Python實(shí)現(xiàn)的遠(yuǎn)程文件自動(dòng)打包并下載功能示例

    這篇文章主要介紹了Python實(shí)現(xiàn)的遠(yuǎn)程文件自動(dòng)打包并下載功能,結(jié)合實(shí)例形式分析了Python使用spawn()方法執(zhí)行ssh、scp 命令實(shí)現(xiàn)遠(yuǎn)程文件的相關(guān)操作技巧,需要的朋友可以參考下
    2019-07-07

最新評(píng)論