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

使用Python對Access讀寫操作

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

學(xué)習(xí)Python的過程中,我們會遇到Access的讀寫問題,這時我們可以利用win32.client模塊的COM組件訪問功能,通過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ù)庫連接

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

3、打開一個記錄集

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

4、對記錄集操作

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

5、用SQL語句來增、刪、改數(shù)據(jù)

# 增
sql = "Insert Into [rs_name] (id, innerserial, mid) Values ('002133800088980002', 2, '21338')" #sql語句
conn.Execute(sql) #執(zhí)行sql語句
# 刪
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ù)庫

conn.close()

補(bǔ)充

如果是python3好像需要用到pypyodbc

# 話不多說,碼上見分曉!

使用模塊: pypyodbc

例子和安裝詳見:

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:
 # 展示個字段的值
 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

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

相關(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掃碼登錄,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • scrapy+flask+html打造搜索引擎的示例代碼

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

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

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

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

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

    這篇文章主要介紹了pymongo給mongodb創(chuàng)建索引的簡單實(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庫可以很容易幫你搞定,而且性能也是很出色的;百萬級的表關(guān)聯(lián),可以秒出,本文給大家分享pandas常用表連接merge/concat/join/append詳解,感興趣的朋友跟隨小編一起看看吧
    2023-02-02
  • python實(shí)現(xiàn)求最長回文子串長度

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

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

    Python操作word文檔的示例詳解

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

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

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

最新評論