标签: ado

python数据库/ sql编程 - 从哪里开始

使用嵌入式数据库的最佳方法是什么,比如Python中的sqlite:

  1. 应占地面积小.我每张桌子只需要几千条记录.每个数据库只有少数几个表.
  2. 如果它是由Python默认安装提供的那个,那么很棒.必须是开源的,可在Windows和Linus上使用.
  3. 如果不直接编写SQL,但完全不需要ORM,则更好.有些东西可以保护我免受实际数据库的影响,但不是那么庞大的库.与ADO类似的东西会很棒.
  4. 大多数将通过代码使用,但如果有一个GUI前端,那就很好
  5. 只需几页即可开始使用.我不想浏览页面读取表格以及Select语句的工作原理.我知道这一切.
  6. 支持Python 3是首选,但2.x也可以.

用法不是网络应用程序.它是一个小型数据库,最多可容纳5个表.每个表中的数据只是几个字符串列.想想比腌制词典更大的东西

更新:非常感谢您提出的好建议.
我正在谈论的用例非常简单.你可能会在一两天内做一件事.
这是一个100行的Python脚本,它收集有关相对大量文件(比如10k)的数据,并创建关于它们的元数据文件,然后创建一个关于整个文件树的大型元数据文件.我只需要避免重新处理已经处理的文件,并为更新的文件创建元数据,并更新主元数据文件.在某种程度上,缓存已处理的数据,并仅在文件更新时更新它.如果缓存已损坏/不可用,则只需处理整个树.可能需要20分钟,但没关系.

请注意,所有处理都在内存中完成.

我想避免任何外部依赖,以便脚本可以很容易地放在任何系统上,只需要安装Python.作为Windows,有时很难安装所有组件.因此,在我看来,即使是数据库也可能是一种过度杀伤力.

您可能不会启动Office Word/Writer来编写一个小型的帖子类型注释,同样我不愿意使用像Django这样的用例.

从哪儿开始?

python database sqlite ado

7
推荐指数
2
解决办法
5815
查看次数

请求的操作需要OLE DB会话对象... - 通过ADO将Excel连接到SQL服务器

我正在尝试使用Excel 2003并将其连接到SQL Server 2000以运行一些动态生成的SQL查询,这些查询最终会填充某些单元格.

我试图通过ADO通过VBA执行此操作(我已经尝试过2.8到2.0)但是在设置对象ActiveConnection内部的变量时出现错误ADODB.Connection.我需要快速解决这个问题......

请求的操作需要OLE DB会话对象,当前提供程序不支持该对象.

老实说,我不确定这个错误意味着什么,现在我不在乎.如何才能使此连接成功,以便我可以运行查询?

这是我的VB代码:

Dim SQL As String, RetValue As String
SQL = " select top 1 DateTimeValue from SrcTable where x='value' " 'Not the real SQL
RetValue = ""


Dim RS As ADODB.Recordset
Dim Con As New ADODB.Connection
Dim Cmd As New ADODB.Command

Con.ConnectionString = "Provider=sqloledb;DRIVER=SQL Server;Data Source=Server\Instance;Initial Catalog=MyDB_DC;User Id=<UserName>;Password=<Password>;"
Con.CommandTimeout = (60 * 30)


Set Cmd.ActiveConnection = Con   ''Error occurs here.

' I'm not sure if the rest …
Run Code Online (Sandbox Code Playgroud)

sql-server oledb excel vba ado

7
推荐指数
1
解决办法
3万
查看次数

来自MARS的ODBC是来自VENUS的ADO/OLEDB吗?

简短的问题:我发现我需要使用MARS而不是ADO/OLEDB,这是正确的吗?

更长的解释:

我刚刚发现我的ODBC代码(使用"Driver = {SQL Native Client}",MFC CDatabase代码)需要有MARS("MARS_Connection = yes;"),因为虽然我在打开RecordSet时没有发出多个SELECT,但我做了获取一批行,然后需要打开另一个RecordSet来发出一个新的SELECT,然后返回到下一批的第一个RecordSet.没有MARS我得到ODBC错误"连接忙于另一个命令的结果".一切都很公平.

但是,我的代码与ADO/OLEDB("Provider = SQLNCLI",#import msado15.dll)相同,而不是ODBC.在同样的情况下,我没有必须指定"MarsConn = yes".

我感到困惑/惊讶.这是正确/预期的,还是我错过了什么?

oledb odbc ado recordset sql-server-mars

7
推荐指数
1
解决办法
775
查看次数

经典ASP 3.0从Recordset创建数组

我正在尝试修复ASP Classic应用程序,当我尝试从Recordset对象创建一个数组时.但是,我不能让它正常工作.

这段代码给了我一条记录(最后一条),但据我所知,它是正确的:

Dim Products
Dim Products_cmd
Dim Products_numRows

Set Products_cmd = Server.CreateObject ("ADODB.Command")
Products_cmd.ActiveConnection = Conn
Products_cmd.CommandText = "SELECT prod_id, prod_description FROM dbo.products ORDER BY prod_description ASC" 
Products_cmd.Prepared = true

Set Products = Products_cmd.Execute
Products_numRows = 0

Dim arrProducts()
arrProducts = Products.GetRows()
Run Code Online (Sandbox Code Playgroud)

使用此代码给我一个"下标超出范围:'UBound'

Dim Products
Dim Products_cmd
Dim Products_numRows

Set Products_cmd = Server.CreateObject ("ADODB.Command")
Products_cmd.ActiveConnection = Conn
Products_cmd.CommandText = "SELECT prod_id, prod_description FROM dbo.products ORDER BY prod_description ASC" 
Products_cmd.Prepared = true

Set Products = Products_cmd.Execute
Products_numRows = 0
Dim …
Run Code Online (Sandbox Code Playgroud)

vbscript ado asp-classic

7
推荐指数
1
解决办法
3万
查看次数

尝试运行短过程时查询超时已到期

这是我的连接字符串:

Global Const strConn As String = _
    "PROVIDER=SQLNCLI10;" & _
    "P-SSWORD=blahblah;" & _
    "USER ID=blahblah;" & _
    "INITIAL CATALOG=blah;" & _
    "DATA SOURCE=blah;" & _
    "CONNECT TIMEOUT=0;" & _
    "COMMAND TIMEMOUT=0" & _
    "PACKET SIZE=4096;"
Run Code Online (Sandbox Code Playgroud)

这是简单的代码:

Sub MoveDataUsingADO()

Dim cn As Object
Dim cm As Object
Dim rs As Object

    'get in touch with the server
    'Create ado objects.
Set cn = CreateObject("ADODB.Connection")
cn.connectiontimeout = 0
cn.Open strConn
cn.CommandTimeout = 0

Set cm = CreateObject("ADODB.Command")
Set cm.ActiveConnection = cn …
Run Code Online (Sandbox Code Playgroud)

excel vba ado excel-vba

7
推荐指数
1
解决办法
4万
查看次数

使用Delphi的ADO或DBX

哪个更好(以及为什么原因)用于从Delphi Win32应用程序--ADO或DBX(数据库快速)连接到MS SQL,Oracle或Firebird?

两者都允许您连接到主要数据库.我喜欢ADO通过连接字符串更改完成所有操作的方式以及ADO和驱动程序包含在Windows中这样的事实,因此无需额外部署(看起来,如果我错了,请纠正我).

DBX也很灵活,我可以将驱动程序编译到我的应用程序中,不是吗?

如果可能的话,我真的很想拥有一个单一来源,能够根据客户的IT部门/偏好来改变数据库.

但哪个更容易编程,性能更好,最有效地使用内存?还有其他什么可以区分它们吗?

谢谢,理查德

database delphi ado dbx

6
推荐指数
2
解决办法
3122
查看次数

如何确定SSIS数据集中的行数

我经常在SSIS包中遇到一种情况,我在其中运行SQL命令以从ADO连接返回一组行.有些情况下我想根据返回的行数进行分支.ado结果集存储在SSIS"对象"数据类型中.SSIS表达式或脚本组件中是否有一种方法可以获得行数?

ssis ado

6
推荐指数
1
解决办法
1万
查看次数

Delphi与SQL Server:OLEDB与Native Client驱动程序

我被告知SQL Native Client 应该比OLEDB驱动程序更快.所以我把一个实用工具放在一起进行两者之间的负载测试 - 结果好坏参半.有时一个更快,有时另一个更快,无论查询是什么(简单选择,where子句,join,order by等).当然,服务器承担了大部分工作量,但我对进入PC的数据到应用程序中可访问数据之间的时间感兴趣.

负载测试由非常小的查询组成,这些查询返回非常大的数据集.例如,我这样做select * from SysTables,这个表有50,000多条记录.在收到数据之后,我再次循环执行结果(使用while而不是Q.eof ... Q.next ...等).我也试过在查询中添加一些东西 - 比如order by Val哪里Val是一个varchar(100)字段.

这是我的负载测试仪的样本,最底部的数字是平均值...

在此输入图像描述

那么真的,两者之间有什么区别?我知道OLE非常灵活,支持许多不同的数据库引擎,而Native Client仅针对SQL Server.但是幕后还有什么呢?这又如何影响Delphi如何使用这些驱动程序?

这通过TADOConnection组件特别使用ADO TADOQuery.

我不一定在寻找或想办法提高性能 - 我只需要知道驱动程序之间的区别.

sql-server delphi oledb ado sqlncli

6
推荐指数
3
解决办法
9867
查看次数

SQL中的参数 - Delphi 7

我正在使用Delphi 7和Access 2007.

我想知道任何人都可以告诉我如何使用SQL语句和ADO参数.

什么是必要的编码等等.对不起,我是Delphi的新手.

sql delphi ado delphi-7

6
推荐指数
1
解决办法
8202
查看次数

无法将空字符串传递到非空数据库字段

我很难接受一些非常直截了当的事情.我有一个SQL Server数据库,我正在尝试使用空字符串更新不可为空的varchar或nvarchar字段.我知道这是可能的,因为空字符串''一样的东西NULL.但是,使用它TADOQuery,它不允许我这样做.

我正在尝试更新现有记录,如下所示:

ADOQuery1.Edit;
ADOQuery1['NonNullFieldName']:= '';
//or
ADOQuery1.FieldByName('NonNullFieldName').AsString:= '';
ADOQuery1.Post; //<-- Exception raised while posting
Run Code Online (Sandbox Code Playgroud)

如果字符串中有任何内容,即使只是一个空格,它也会像预期的那样保存得很好.但是,如果它是一个空字符串,它会失败:

不可为空的列无法更新为Null.

但它不是空的.它是一个空字符串,应该可以正常工作.我发誓我过去曾多次通过空串.

为什么我会收到此错误,我应该怎么做才能解决它?


额外细节:

  • 数据库:Microsoft SQL Server 2014 Express
  • 语言:Delphi 10 Seattle Update 1
  • 数据库驱动: SQLOLEDB.1
  • 正在更新的字段: nvarchar(MAX) NOT NULL

sql-server delphi ado sql-server-2014 delphi-10-seattle

6
推荐指数
1
解决办法
1033
查看次数