我正在编写一个脚本来提取/更新MsSQL服务器,我可以让我的一个存储过程调用工作但不是我在updateDB函数中的第二个.这是我的代码脚本运行正常没有错误代码
import pyodbc
import json
import argparse
import cgi, cgitb
#GLOBALS
BUILDCODE = " "
deptCODE = 0
bldgCODE = " "
def getCodes(conn, building, department):
#just for testing
departmentt = 'COMPUTER SCIENCE'
buildingt = 'PEARCE HALL'
#geting the building code from db
cursorBuild = conn.cursor()
cursorBuild.execute("select * from dbo.building where name = '%s'" % buildingt)
bldgRow = cursorBuild.fetchall()
cursorBuild.close()
bldgCode = bldgRow.pop(0)
global bldgCODE
bldgCODE = bldgCode.code
#getting the dept code
cursorDept = conn.cursor()
cursorDept.execute("execute dbo.GetCode_ByDepartment @department = '%s'" …Run Code Online (Sandbox Code Playgroud) 我在Linux上使用pyodbc和FreeTDS连接到SQL Server 2005.我注意到我的连接的超时参数没有被我的查询所尊重.
当我运行以下操作时,我希望在cursor.execute调用之后看到超时错误.
import pyodbc
import time
connString = 'SERVER=dbserver;PORT=1433;DATABASE=db;UID=dbuser;PWD=dbpwd;' + \
'DRIVER=FreeTDS'
cnxn = pyodbc.connect(connString , timeout=3)
cursor = cnxn.cursor()
t1 = time.time()
cursor.execute("SELECT MAX(Qty) FROM big_table WHERE ID<10000005")
print cursor.fetchone()
t2 = time.time()
print t2-t1
cursor.execute("WAITFOR DELAY '00:00:30'")
print 'OK'
Run Code Online (Sandbox Code Playgroud)
相反,我得到了这个输出.指示第一个db查询占用7.5秒,第二个调用占用30秒而不会超时.
(808432.0, )
7.56196093559
OK
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来强制使用pyodbc和SQL Server查询超时?
我有连接到Microsoft SQL Server实例从一个问题pyODBC的内Ubuntu (12.10)机.
我得到的错误是:
pyodbc.Error: ('IM002', '[IM002] [unixODBC][Driver Manager]Data Source name not found, and no default driver specified (0) (SQLDriverConnect)')
Run Code Online (Sandbox Code Playgroud)
用于pyodbc的连接字符串是:
self.corpus_cnxn = pyodbc.connect('DRIVER={FreeTDS};SERVER=UKEDN-06880;DATABASE=db1;UID=user;PWD=pass')
Run Code Online (Sandbox Code Playgroud)
这似乎可以在Windows中的pyODBC中正常工作(只需要将DRIVER更改为'SQL Server'而不是'FreeTDS'),当我尝试使用终端上的tsql 工具从Ubuntu机器连接时,它工作正常,以下命令:
tsql -S UKEDN-06880 -p 1433 -U user -P pass
Run Code Online (Sandbox Code Playgroud)
我可以选择任何没有问题的表,它似乎没有在pyODBC内工作.
任何帮助或建议将不胜感激,我的Linux技能非常弱,我完全陷入困境,虽然它从tsql工作,我感觉非常接近!
我正在尝试使用pyodbc将日期时间值插入到MS SQL Server表中.如果我手动执行,例如:
cursor.execute("""insert into currentvalue(value1,currentdatetime)
values(55,'2014-06-27 16:42:48.533')""")
Run Code Online (Sandbox Code Playgroud)
我没有任何问题,但是当我尝试做的时候:
currenttime = str(datetime.datetime.now())
cursor.execute("""insert into currentvalue(value1,currentdatetime)
values(55,"""+ currenttime+")")
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误:
SQL服务器'07'附近的语法不正确,我认为这是日期和开始时间之后的数字.
我也试过这个:
currenttime = "'"+str(datetime.datetime.now())+"'"
Run Code Online (Sandbox Code Playgroud)
现在出现这个错误:
从字符串转换日期和/或时间时转换失败.
我尝试了以下方法:
private String password = "";
private String dbName = "dataHC.accdb";
private String bd = dbName + ";PWD=" + password;
String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="+bd+";";
private Connection conn = null;
//Connect
public void connect() {
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn = DriverManager.getConnection(url);
if (conn != null)
System.out.println("Conexión a base de datos "+dbName+". listo");
}catch(SQLException e){
System.out.println(e);
}catch(ClassNotFoundException e){
System.out.println(e);
}
}
Run Code Online (Sandbox Code Playgroud)
字体:http://www.jc-mouse.net/base-de-datos/consultas-con-parametros-en-access-y-java
我得到了这个错误:
[Microsoft] [ODBC Microsoft Access驱动程序]常规错误无法打开注册表项临时(易失性)Ace DSN进程0x7f8线程0x1174 DBC
特别
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver]General error …Run Code Online (Sandbox Code Playgroud) 我正在尝试从Python创建一个MS Access数据库,并想知道是否可以直接从pandas数据帧创建一个表.我知道,我可以用熊猫dataframe.to_sql()功能的数据帧成功地写入到SQLite数据库或通过使用SQLAlchemy的发动机为其他数据库格式(但不是不幸访问),但我不能让所有的件件走到一起.这是我一直在测试的代码片段:
import pandas as pd
import sqlalchemy
import pypyodbc # Used to actually create the .mdb file
import pyodbc
# Connection function to use for sqlalchemy
def Connection():
MDB = 'C:\\database.mdb'
DRV = '{Microsoft Access Driver (*.mdb)}'
connection_string = 'Driver={Microsoft Access Driver (*.mdb)};DBQ=%s' % MDB
return pyodbc.connect('DRIVER={};DBQ={}'.format(DRV,MDB))
# Try to connect to the database
try:
Conn = Connection()
# If it fails because its not been created yet, create it and connect to it
except:
pypyodbc.win_create_mdb(MDB)
Conn …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用pyodbc连接到Windows Server 2008 R2 localhost上的MySQL 5.6.我在localhost上使用了MySQL实例的完整安装,包括ODBC连接器.我把它连接到一个远程SQL Server实例很漂亮,但对于我的生活,我无法让它连接到本地MySQL实例.我使用connectionstrings.com的这个指南作为参考.
这是一些代码:
import pyodbc
def create_mssql_conn():
return pyodbc.connect(r'Driver={SQL Server};Server=MSSQLSRV;Database=ecomm;Trusted_Connection=yes;')
def create_mysql_conn():
return pyodbc.connect(r'Provider=MSDASQL;Driver={MySQL ODBC 5.6 UNICODE Driver};Server=127.0.0.1;Database=ecomm;User=root;Password=myP@$$w0rd;Option=3;')
# conn = create_mssql_conn() # This one works
conn = create_mysql_conn() # This one breaks
cursor = conn.cursor()
cursor.execute('SELECT * FROM inventory')
while 1:
row = cursor.fetchone()
if not row:
break
print row
Run Code Online (Sandbox Code Playgroud)
这是错误:
pyodbc.Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')
Run Code Online (Sandbox Code Playgroud)
我尝试了从添加 …
我一直在Linux上使用django-pyodbc-azure一段时间,还有pydobc,FreeTDS和unixODBC将Django连接到SQL Server 2014.我遇到了这个问题,我的应用程序工作正常,调试有问题它.为了重现这个问题,我开始使用全新的Django应用程序来保持简单.这是我的virtualenv:
(azuretest)[vagrant@vagrant azuretest]$ pip freeze
Django==1.8.6
django-pyodbc-azure==1.8.3.0
pyodbc==3.0.10
Run Code Online (Sandbox Code Playgroud)
这是我连接到SQL Server的数据库配置:
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'HOST': 'myserver.com',
'PORT': '1433',
'NAME': 'my_db',
'USER': 'my_db_user',
'PASSWORD': 'mypw',
'AUTOCOMMIT': True,
'OPTIONS': {
'driver': 'FreeTDS',
'autocommit': True,
'unicode_results': True,
'host_is_server': True,
'extra_params': 'tds_version=7.2',
},
},
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个简单的models.py:
class TestTemp(models.Model):
tempdate = models.DateField()
Run Code Online (Sandbox Code Playgroud)
这个设置在一个相当复杂的Django项目中运行良好,该项目仍可以SELECT到同一个数据库.但是,每当我尝试进行UPDATE或迁移时,我都会收到此错误:
(azuretest)[vagrant@vagrant azuretest]$ ./manage.py migrate home
Operations to perform:
Apply all migrations: home
Running migrations:
Rendering model states... DONE
Applying home.0001_initial...Traceback (most recent call last):
File "/home/vagrant/.virtualenvs/azuretest/lib/python3.4/site-packages/sql_server/pyodbc/base.py", line …Run Code Online (Sandbox Code Playgroud) 我正在从api网站下载Json数据,并使用sqlalchemy,pyodbc和pandas的to_sql函数将该数据插入到MSSQL服务器中.
我可以下载最多10000行,但是我必须将chunksize限制为10,否则我会收到以下错误:
DBAPIError:(pyodbc.Error)('07002','[07002] [Microsoft] [SQL Server Native Client 11.0] COUNT字段不正确或语法错误(0)(SQLExecDirectW)')[SQL:'INSERT INTO [TEMP_producing_entity_details]
有大约5亿行可供下载,它只是以这种速度爬行.有关解决方法的任何建议吗?
谢谢,
所以我在使用远程MS SQL Server进行sqlalchemy和pyodbc时遇到了一些麻烦.本地sqlcmd工作正常但不是当我尝试通过python代码读取数据库时.任何帮助,将不胜感激.
环境:
以下sqlcmd正常工作
sqlcmd -S {Host},{Port} -U {USER} -P {PWD} -Q "use {Database};"
Run Code Online (Sandbox Code Playgroud)
试图直接使用sqlalchemy或pyodbc不起作用.错误:
pyodbc.OperationalError:('HYT00',u'[HYT00] [unixODBC] [Microsoft] [SQL Server的ODBC驱动程序17]登录超时过期(0)(SQLDriverConnect)')
代码:尝试使用pyodbc
conn = pyodbc.connect(
r'DRIVER={ODBC Driver 17 for SQL Server};'
r'SERVER=HOST,PORT;'
r'DATABASE=DATABASE;'
r'UID=UID;'
r'PWD=PWD'
)
Run Code Online (Sandbox Code Playgroud)
尝试使用sqlalchemy:
create_engine('mssql+pyodbc://{user}:{password}@{host}:{port}/{database}?driver={driver}'.format(
user=user,
password=password,
host=host,
database=database,
port=port,
driver="ODBC+Driver+17+for+SQL+Server"
)).connect()
Run Code Online (Sandbox Code Playgroud)
如果我从命令中删除端口,我可以使用sqlcmd重现错误,所以我传递给pyodbc的conn_string可能格式不正确吗?