`
john2007
  • 浏览: 77876 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

利用python操作access,sql server数据库

阅读更多

本文主要介绍了python如何利用 ADO访问windows平台下的数据库,比如access,sql server.

(译者注:作者原文用的IDE是pythonwin,但我的pytonwin重装了两遍了就是用不起来,就算写个helloworld运行也崩掉,妈的,只好用IDLE了)

Table of Contents

 

  1. Running MakePy
  2. DSN
  3. Opening a Recordset
  4. Looking at the Recordset
  5. Adding new Records
  6. Database Table Information
  7. Closing Connections
  8. Using SQL with ADO
  9. Getting the RecordCount
  10. Common Questions and Answers about Python and ADO.

 

 

  1. 首先要做的就是运行makepy组件。这不是必须的,但是它可以improves speed and makes life in the PythonWin IDE that much easier. 从pythonWin的菜单里选择com makepy Utility,然后选择 Microsoft ActiveX Data object 2.5 Library.
  2. 下一步我们需要一个DSN(data source name)和一个connection 对象,对于access可以直接拷贝下面的字符串,对其他的数据库或者要设置一些高级选项,可以去[控制面板 | 管理工具 | 数据源 ]。在那里,我们可以建立一个系统DSN,或者把它(它只是一个文本文件)作为字符串拷贝进剪贴板,也可以建立一个DNS-less connection string。我们也可以在网上搜索其他数据库的DNS-less connection string,比如:sql server,access,foxPro,oracle, 还有 mysql.
    >>> import win32com.client
    >>> conn = win32com.client.Dispatch(r'ADODB.Connection')
    >>> DSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=C:/MyDB.mdb;'
    >>> conn.Open(DSN)
    有了这些设置,我们访问数据库就是易如反掌了。
  3. 下一步的任务是打开一个recordset。对于一些有趣的东西比如joins或者类似的,我们可以用select * from talbename 类型的声明,或者只用一个中括号把表明括起来。
    >>> rs = win32com.client.Dispatch(r'ADODB.Recordset')
    >>> rs_name = 'MyRecordset'
    >>> rs.Open('[' + rs_name + ']', conn, 1, 3)
    
     对于参数1和3,分别表示:adOpenKeyset and adLockOptimistic 。对他们的解释已经超出了本指南的范围,请参考相关资料。
  4. 有了打开的recordset我们就可以遍历字段:                                                                                           >>> flds_dict = {}
    >>> for x in range(rs.Fields.Count):
    ...     flds_dict[x] = rs.Fields.Item(x).Name
    字段的类型和大小可以这样得到:                                                                                                       >>> print rs.Fields.Item(1).Type
     202 # 202 is a text field
    >>> print rs.Fields.Item(1).DefinedSize                                                                                       50  # 50 Characters

添加新的记录可以用insert语句,或者直接调用AddNew() or Update()方法:                                             >>> rs.AddNew()
        >>> rs.Fields.Item(1).Value = 'data'
        >>> rs.Update()
These values can be also be returned.

        >>> x = rs.Fields.Item(1).Value
        >>> print x
        'data'
        

So, if one wants to create a new Record, and know what number an AutoNumber field has generated for it without having to query the database ...

        >>> rs.AddNew()
        >>> x = rs.Fields.Item('Auto_Number_Field_Name').Value  
        # x contains the AutoNumber
        >>> rs.Fields.Item('Field_Name').Value = 'data'
        >>> rs.Update()
      
  • You can get a list of the Tables in a Database using ADO.
  •  

  •         >>> oCat = win32com.client.Dispatch(r'ADOX.Catalog')
            >>> oCat.ActiveConnection = conn
            >>> oTab = oCat.Tables
            >>> for x in oTab:
            ...     if x.Type == 'TABLE':
            ...         print x.Name
            

            >>> conn.Close()
            

            >>> conn = win32com.client.Dispatch(r'ADODB.Connection')
            >>> DSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=C:/MyDB.mdb;'
            >>> sql_statement = "INSERT INTO [Table_Name] 
                                 ([Field_1], [Field_2]) VALUES ('data1', 'data2')"
            >>> conn.Open(DSN)
            >>> conn.Execute(sql_statement)
            >>> conn.Close()
            >>> # See example 3 above for the set-up to this 
            >>> rs.MoveFirst()
            >>> count = 0
            >>> while 1:
            ...     if rs.EOF:
            ...         break
            ...     else:
            ...         count = count + 1
            ...         rs.MoveNext()
            
    Aside from being horribly inefficient, if the recordset is empty, moving to the first record will generate an error. ADO provides a way to correct this. Before opening the recordset, set the CursorLocation to 3. After opening the recordset, the recordcount will be available.
            >>> rs.Cursorlocation = 3 # don't use parenthesis here
            >>> rs.Open('SELECT * FROM [Table_Name]', conn) # be sure conn is open
            >>> rs.RecordCount # no parenthesis here either
            186
            
    [Again, the 3 is a constant.]
           

     

     

  • Close the connection. Notice that to close this connection the 'C' is upper case, whereas to close a file opened with python the 'c' is lower case.
  • To use SQL to INSERT or UPDATE data, use a Connection object directly.
  • Here is a last example that often seems to be a sticking point with ADO. Generally, if one wants to get the RecordCount of a table, one must move through all of the records counting them along the way like ...
  • This really just scratches the surface of ADO, but it should help getting connected from Python. For anything more than just simple database scripting it is worth looking into the object model. Here are some links that might be helpful.
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdmscadoobjmod.asp
    http://www.activeserverpages.ru/ADO/dadidx01_1.htm

     

     

     

      Python编程语言的出现,带给开发人员非常大的好处。我们可以利用这样一款功能强大的面向对象开源语言来轻松的实现许多特定功能需求。比如Python操作Access数据库的功能实现等等。在Python操作Access数据库之前,首先,你应安装了Python和Python for Windows extensions。

      Python操作Access数据库步骤之1、建立数据库连接

    1. import win32com.client   
    2. conn = win32com.client.Dispatch(r'ADODB.Connection')   
    3. DSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=C:/MyDB.mdb;'   
    4. conn.Open(DSN) 

    Python操作Access数据库步骤之2、打开一个记录集

    1. rs = win32com.client.Dispatch(r'ADODB.Recordset')   
    2. rs_name = 'MyRecordset'#表名   
    3. rs.Open('[' + rs_name + ']', conn, 1, 3) 

    Python操作Access数据库步骤之3、对记录集操作

    1. rs.AddNew()   
    2. rs.Fields.Item(1).Value = 'data'   
    3. rs.Update() 

    Python操作Access数据库步骤之4、用SQL来插入或更新数据

    1. conn = win32com.client.Dispatch(r'ADODB.Connection')   
    2. DSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=C:/MyDB.mdb;'   
    3. sql_statement = "Insert INTO [Table_Name] ([Field_1], 
      [Field_2]) VALUES ('data1', 'data2')"
         
    4. conn.Open(DSN)   
    5. conn.Execute(sql_statement)   
    6. conn.Close() 

    Python操作Access数据库步骤之5、遍历记录

    1. rs.MoveFirst()   
    2. count = 0   
    3. while 1:   
    4. if rs.EOF:   
    5. break   
    6. else:   
    7. countcount = count + 1   
    8. rs.MoveNext() 

    注意:如果一个记录是空的,那么将指针移动到第一个记录将导致一个错误,因为此时recordcount是无效的。解决的方法是:打开一个记录集之前,先将Cursorlocation设置为3,然后再打开记录集,此时recordcount将是有效的。例如:

    1. rs.Cursorlocation = 3 # don't use parenthesis here   
    2. rs.Open('Select * FROM [Table_Name]', conn) # be sure conn is open   
    3. rs.RecordCount # no parenthesis here either 

    以上就是我们对Python操作Access数据库步骤的相关介绍。

     

    分享到:
    评论

    相关推荐

      SQL SERVER数据库连接客户端

      综上所述,SQL SERVER数据库连接客户端主要包括SQL Native Client的不同版本,它们为开发者和用户提供了与SQL Server进行数据交互的手段,支持各种操作系统的64位版本,是高效连接SQL Server的重要工具。在实际应用...

      SQL Server程序员指南

      - **ODBC(Open Database Connectivity)**:是一种标准的数据库访问接口,允许在各种语言和平台之间访问SQL Server数据库,包括C/C++、Java、Python等。 - **ADO(ActiveX Data Objects)**:是Microsoft开发的一套...

      python数据库编程:Python连接Mssql基础教程之Python库pymssql.pdf

      【Python连接MSSQL数据库】Python的pymssql库提供了与Microsoft SQL Server数据库进行交互的能力。pymssql作为专门针对SQL Server的接口,允许开发者在Python环境中执行SQL语句,进行数据的读写操作。而pyodbc则是一...

      Python连接Mssql基础教程之Python库pymssql

      pymssql模块是用于sql server数据库(一种数据库通用接口标准)的连接。另外pyodbc不仅限于SQL server,还包括Oracle,MySQL,Access,Excel等。 另外除了pymssql,pyodbc还有其他几种连接SQL server的模块,感兴趣的...

      SQL和ACCESS数据库连接代码

      在IT领域,数据库管理是至关重要的,而SQL和Access都是常用的数据库管理系统。本文将深入探讨如何使用编程语言连接这两种数据库,以便进行数据交互和管理。 首先,SQL(Structured Query Language)是一种用于管理...

      AccessDatabaseEngine数据库引擎

      同时,它也可以作为数据迁移的工具,帮助将旧的Access数据库转换到更现代的关系型数据库管理系统(如SQL Server)。 总的来说,AccessDatabaseEngine数据库引擎是连接和操作Access数据库的关键组件,它通过提供广泛...

      【ASP.NET编程知识】将Access数据库中数据导入到SQL Server中的详细方法实例.docx

      ASP.NET 编程知识 - 将 Access 数据库中数据导入到 SQL Server 中的详细方法实例 本文档将详细介绍如何使用 ASP.NET 编程语言将 Access 数据库中的数据导入到 SQL Server 中。该方法实例将指导读者一步步完成数据...

      mysql,sqlserver,oracle的数据库驱动

      微软的SQL Server数据库同样提供了多样化的驱动选择。对于.NET开发者,有SQL Server Native Client(包含ODBC和OLE DB驱动)以及更现代的Microsoft.Data.SqlClient,后者专为.NET Framework和.NET Core设计。JDBC...

      Access数据库转SQL脚本

      数据迁移可以通过多种方式完成,例如使用SQL Server Integration Services (SSIS) 包,或者通过编程方式如使用Python、C#等读取Access数据并插入到SQL Server中。另一种方法是,将Access数据导出为CSV文件,然后在...

      sqlserver2019中文帮助(带书签,高清)

      总之,SQL Server 2019中文帮助文档是一个详尽的资源,它为SQL Server 2019的用户提供了全面的操作指南和技术支持,无论是初学者还是经验丰富的DBA,都能从中受益,有效地管理和利用这个强大的数据库系统。

      连接mysql,oracle ,sqlserver2005数据库驱动程序

      在标题提到的"连接mysql,oracle,sqlserver2005数据库驱动程序"中,我们主要关注的是如何与这三种不同的关系型数据库管理系统(RDBMS)建立连接。这些数据库系统广泛应用于各种规模的企业,从小型初创公司到全球...

      毕业论文设计选题系统(Access+SQLServer版)

      当Access不能满足需求时,用户可以选择将数据库迁移到SQLServer,以支持更大的用户基数和更复杂的数据操作。SQLServer提供了更强大的安全机制、备份恢复策略以及对分布式事务的支持。 3. **网站代码**:系统的核心...

      access数据库驱动

      在本场景中,提供的两个文件"AccessDatabaseEngineX6420190127.exe"和"AccessDatabaseEngine.exe"分别是64位和32位版本的Access数据库引擎,主要用于与SQL Server数据库建立连接。 1. **Access数据库引擎**: 它是...

      python连数据库

      对于使用 Python 的开发者来说,能够熟练掌握如何利用 Python 来连接和操作 SQL Server 数据库是非常重要的技能之一。本文将详细介绍几种使用 Python 连接 SQL Server 数据库的方法,并为初学者提供易于理解的操作...

      access数据库驱动包

      Access数据库驱动包是一种用于连接和操作Microsoft Access数据库的软件组件,它使得开发者可以通过编程语言(如Java、Python等)与Access数据库进行交互。在给定的压缩包中,可能包含了必要的JAR文件或其他类型的库...

      Python操作Word、EXCEL,ACCESS

      `pyodbc`支持ODBC数据源,使得Python能与各种数据库系统(如Access、SQL Server、Oracle等)进行交互。此外,`pymysql`和`sqlite3`库分别用于连接MySQL和SQLite数据库,扩展了Python在数据库操作上的能力。 结合这...

      打印ACCESS和SQL SERVER的数据表结构的源码实例

      无论是在Access还是SQL Server中,理解并能够操作数据表结构都是数据库管理员和开发者必备的技能。通过学习和实践,你可以根据实际需求定制更复杂的代码,比如添加排序、过滤或输出格式化等功能,以满足各种工作场景...

      Access2014数据库驱动 AccessDatabaseEngine.exe

      7. **数据迁移与同步**:通过AccessDatabaseEngine,可以方便地将Access数据库与其他数据库(如SQL Server、MySQL等)进行数据迁移和同步。 8. **报表与查询设计**:虽然不是直接涉及驱动,但Access数据库的强大之...

      ODBC操纵MS_Access数据库.rar

      总的来说,"ODBC操纵MS_Access数据库.rar"的内容可能涵盖了如何设置ODBC数据源、编写ODBC程序代码、执行SQL操作以及利用ODBC进行数据管理的各种技巧和实例。对于需要与MS Access数据库进行交互的开发者来说,这些...

    Global site tag (gtag.js) - Google Analytics