标签: pyodbc

在Ubuntu上通过pyODBC连接到Microsoft 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工作,我感觉非常接近!

python linux sql-server ubuntu pyodbc

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

如何在SQL中获取最后创建的ID

我创建了一个名为participant的表,该表由participant_ID(它是主键并且是identity [具有自动值])和session_ID(它是外键)组成.

当我创建一个新参与者时,我想存储其participant_ID.

我有以下代码,但我收到以下消息错误:'返回附近的语法问题'

connection = pyodbc.connect('Driver={SQL Server Native Client 11.0};Serve=:xxx;Database=xxx;Uid=xxx;Pwd=xxx')
cur = connection.cursor()
pID = cur.execute('INSERT INTO participant(sessions_ID) VALUES (40) RETURNING participant_ID')
Run Code Online (Sandbox Code Playgroud)

提前谢谢了!

python sql sql-server pyodbc

8
推荐指数
3
解决办法
6985
查看次数

使用SQLAlchemy从Pandas Dataframe创建Python MS Access数据库表

我正在尝试从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)

python ms-access sqlalchemy pyodbc pypyodbc

8
推荐指数
1
解决办法
9786
查看次数

DatabaseError: ('HY000', '[HY000] [Microsoft][ODBC SQL Server Driver]连接正忙于另一个 hstmt (0) (SQLExecDirectW) 的结果')

我正在尝试将 SQL Server 中的数据读取到 pandas 数据框中。下面是代码。

def get_data(size):
    con = pyodbc.connect(r'driver={SQL Server}; server=SPROD_RPT01; database=Reporting')
    cur = con.cursor()
    db_cmd = "select distinct top %s * from dbo.KrishAnalyticsAllCalls" %size
    res = cur.execute(db_cmd)
    sql_out = pd.read_sql_query(db_cmd, con, chunksize=10**6)
    frames = [chunk for chunk in sql_out]
    df_sql = pd.concat(frames)
    return df_sql

df = get_data(5000000)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

pandas.io.sql.DatabaseError:执行失败 sql 'select different top 500000 * from dbo.KrishAnalyticsAllCalls': ('HY000', '[HY000] [Microsoft][ODBC SQL Server Driver]连接正忙于另一个 hstmt 的结果(0) (SQLExecDirectW)')

我之前已经执行过该函数并中断了执行,ctrl+k因为我想对函数进行更改。现在,在进行更改后,当我尝试执行该函数时,我收到了上述错误。

由于我不知道有任何 IPython 内核正在运行并在函数中执行查询,因此如何终止该连接/IPython 内核?

python sql-server pyodbc pandas

8
推荐指数
2
解决办法
3万
查看次数

UnicodeDecodeError:'utf-16-le'

我正在尝试从访问数据库中提取表列表。该脚本遍历并显示大约三分之一的表,并出现以下错误:

回溯(最近一次调用最后一次):文件“C:/GageInfo/GageTrakNotify/__test script.py 的源代码”,第 31 行,在cursor2.columns(rows.table_name) 中的 fld 中:UnicodeDecodeError: 'utf-16-le'编解码器无法解码位置 132-133 中的字节:非法编码

任何提示将不胜感激。

import pyodbc


cursor1 = conn.cursor()
cursor2 = conn.cursor()

tblCount = 0
for rows in cursor1.tables():
   if rows.table_type == "TABLE":
       tblCount += 1
       print(rows.table_name)
       for fld in cursor2.columns(rows.table_name):
           print(fld.table_name, fld.column_name)

conn.close()
Run Code Online (Sandbox Code Playgroud)

python ms-access odbc pyodbc utf-16le

8
推荐指数
2
解决办法
3万
查看次数

to_sql pyodbc count字段不正确或语法错误

我正在从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亿行可供下载,它只是以这种速度爬行.有关解决方法的任何建议吗?

谢谢,

python sql-server pyodbc pandas

8
推荐指数
1
解决办法
3208
查看次数

SQLAlchemy 错误:尝试完成事务失败。没有找到对应的交易

我已经安装了:

  • 乌班图 (18.04)
  • Python (3.6.8)
  • msodbcsql17(适用于 SQL Server 的 Microsoft ODBC 驱动程序 17)
  • SQLAlchemy (1.3.5)
  • 熊猫 (0.24.2)

我只想使用 SQLAlchemy 和 Azure SQL 数据仓库创建一个概念证明。但是,当我尝试使用以下代码对映射到客户视图表的客户模型运行查询时:

import urllib

from sqlalchemy import create_engine
from sqlalchemy import Column, Integer
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

db_username = 'username'
db_password = 'password'
db_database = 'dbname'
db_hostname = 'dbhost'
db_driver = 'ODBC Driver 17 for SQL Server'
db_port = '1433'

db_connectionString = f"DRIVER={{{db_driver}}}; SERVER={{{db_hostname}}}; DATABASE={{{db_database}}}; UID={{{db_username}}}; PWD={{{db_password}}}; PORT={{{db_port}}};"

engine_params = urllib.parse.quote_plus(db_connectionString)

engine = create_engine(f"mssql+pyodbc:///?odbc_connect={engine_params}", echo=True) …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy pyodbc msodbcsql17 azure-synapse

8
推荐指数
1
解决办法
7226
查看次数

Pyodbc 驱动程序为空

好吧,我在mac上安装了python3.8,分别安装了一些odbcdrivers。我创建了一个新的虚拟环境,并在该环境中运行以下命令:

>>> import pyodbc
>>> pyodbc.drivers()
[]
>>> 
Run Code Online (Sandbox Code Playgroud)

无论我在哪里运行命令,我都会得到这个。

python sql odbc pyodbc

8
推荐指数
1
解决办法
8514
查看次数

处理 TCP 提供程序:错误代码 0x68 (104)

我正在使用此代码将我的数据库与客户端同步:

    import pyodbc

    SYNC_FETCH_ARRAY_SIZE=25000

    # define connection + cursor
    connection = pyodbc.connect()
    cursor = connection.cursor()

    query = 'select some_columns from mytable'
    cursor.execute(query)

    while True:
        rows = cursor.fetchmany(SYNC_FETCH_ARRAY_SIZE) # <<< error here

        if not rows:
            break

        insert_to_our_db(rows)

    cursor.close()
Run Code Online (Sandbox Code Playgroud)

我间歇性地收到以下错误:

File "....py", line 120, in ...
  rows = sg_cur.fetchmany(SYNC_FETCH_ARRAY_SIZE)
pyodbc.OperationalError: ('08S01', '[08S01] [Microsoft][ODBC Driver 17 for SQL Server]TCP Provider: Error code 0x68 (104) (SQLGetData)')
Run Code Online (Sandbox Code Playgroud)

我应该如何处理这个错误?这是连接上的错误(因此我需要关闭并重新创建连接)还是光标上的错误,我只需要添加重试?

我将添加以下内容来重试(代替抛出错误的行),这足以解决问题吗?如果我遇到 TCP 错误,重试会有任何影响吗?

File "....py", line 120, in ...
  rows = sg_cur.fetchmany(SYNC_FETCH_ARRAY_SIZE)
pyodbc.OperationalError: ('08S01', '[08S01] [Microsoft][ODBC Driver …
Run Code Online (Sandbox Code Playgroud)

python pyodbc

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

pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC SQL Server 驱动程序][SQL Server]附近语法不正确

我正在使用 python 3.9 使用 pyobc 将多个新闻列表从 google rss news 插入到带有参数的 SQL 表中,但总是出现以下编程错误:

\n
\n

Cursor.execute(query) pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC SQL Server 驱动程序][SQL Server]'c\xc3\xb2'\n 附近的语法不正确。(102) (SQLExecDirectW )”)

\n
\n

我检查了sql表,发现实际上有一些记录已成功导入到SQL(15条记录),但不是全部(30条记录)

\n

下面是我的所有代码,请帮忙!

\n
import bs4\nfrom bs4 import BeautifulSoup as soup\nfrom urllib.request import urlopen\nimport pyodbc\n\nnews_url="https://news.google.com/rss?hl=vi&gl=VN&ceid=VN:vi"\nClient=urlopen(news_url)\nxml_page=Client.read()\nClient.close()\nsoup_page=soup(xml_page,"xml")\nnews_list=soup_page.findAll("item")\n\ncnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=ADMIN;DATABASE=NewsCollect2')\ncursor = cnxn.cursor()\n\nfor news in news_list:\n    query = f"insert into news2(Title,Source1,Time1) values (N'"+news.title.text+"',N'"+news.source.text+"',N'"+news.pubDate.text+"')"\n    cursor.execute(query)\n    cursor.commit()\ncursor.close()\ncnxn.close()\n
Run Code Online (Sandbox Code Playgroud)\n

p/s 我尝试提取到 txt 文件,它工作得很好

\n

python sql-server beautifulsoup pyodbc

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