我有连接到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工作,我感觉非常接近!
我创建了一个名为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创建一个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) 我正在尝试将 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 内核?
我正在尝试从访问数据库中提取表列表。该脚本遍历并显示大约三分之一的表,并出现以下错误:
回溯(最近一次调用最后一次):文件“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) 我正在从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亿行可供下载,它只是以这种速度爬行.有关解决方法的任何建议吗?
谢谢,
我已经安装了:
我只想使用 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) 好吧,我在mac上安装了python3.8,分别安装了一些odbcdrivers。我创建了一个新的虚拟环境,并在该环境中运行以下命令:
>>> import pyodbc
>>> pyodbc.drivers()
[]
>>>
Run Code Online (Sandbox Code Playgroud)
无论我在哪里运行命令,我都会得到这个。
我正在使用此代码将我的数据库与客户端同步:
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 3.9 使用 pyobc 将多个新闻列表从 google rss news 插入到带有参数的 SQL 表中,但总是出现以下编程错误:
\n\n\nCursor.execute(query) pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC SQL Server 驱动程序][SQL Server]'c\xc3\xb2'\n 附近的语法不正确。(102) (SQLExecDirectW )”)
\n
我检查了sql表,发现实际上有一些记录已成功导入到SQL(15条记录),但不是全部(30条记录)
\n下面是我的所有代码,请帮忙!
\nimport 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()\nRun Code Online (Sandbox Code Playgroud)\np/s 我尝试提取到 txt 文件,它工作得很好
\npyodbc ×10
python ×10
sql-server ×5
ms-access ×2
odbc ×2
pandas ×2
sql ×2
sqlalchemy ×2
linux ×1
msodbcsql17 ×1
pypyodbc ×1
ubuntu ×1
utf-16le ×1