相关疑难解决方法(0)

将数据从pyodbc移动到pandas

我正在查询SQL数据库,我想使用pandas来处理数据.但是,我不确定如何移动数据.以下是我的输入和输出.

import pyodbc
import pandas
from pandas import DataFrame

cnxn = pyodbc.connect(r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\users\bartogre\desktop\CorpRentalPivot1.accdb;UID="";PWD="";')
crsr = cnxn.cursor()
for table_name in crsr.tables(tableType='TABLE'):
    print(table_name)
cursor = cnxn.cursor()
sql = "Select sum(CYTM), sum(PYTM), BRAND From data Group By BRAND"
cursor.execute(sql)
for data in cursor.fetchall():
    print (data)
Run Code Online (Sandbox Code Playgroud)
('C:\\users\\bartogre\\desktop\\CorpRentalPivot1.accdb', None, 'Data', 'TABLE', None)
('C:\\users\\bartogre\\desktop\\CorpRentalPivot1.accdb', None, 'SFDB', 'TABLE', None)
(Decimal('78071898.71'), Decimal('82192672.29'), 'A')
(Decimal('12120663.79'), Decimal('13278814.52'), 'B')
Run Code Online (Sandbox Code Playgroud)

python pyodbc pandas

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

使用PYODBC从pandas获取数据到SQL服务器

我试图了解python如何将数据从FTP服务器提取到pandas然后将其移动到SQL服务器.我的代码至少可以说是非常简陋的,我正在寻找任何建议或帮助.我试图从FTP服务器首先加载数据工作正常....如果我然后删除此代码并将其更改为从ms sql服务器中选择它是好的所以连接字符串工作,但插入到SQL服务器似乎造成了问题.

import pyodbc
import pandas
from ftplib import FTP
from StringIO import StringIO
import csv

ftp = FTP ('ftp.xyz.com','user','pass' )
ftp.set_pasv(True)
r = StringIO()
ftp.retrbinary('filname.csv', r.write)

pandas.read_table (r.getvalue(), delimiter=',')


connStr = ('DRIVER={SQL Server Native Client 10.0};SERVER=localhost;DATABASE=TESTFEED;UID=sa;PWD=pass')
conn = pyodbc.connect(connStr)

cursor = conn.cursor()
cursor.execute("INSERT INTO dbo.tblImport(Startdt, Enddt, x,y,z,)" "VALUES                  (x,x,x,x,x,x,x,x,x,x.x,x)")
cursor.close()
conn.commit()
conn.close()
print"Script has successfully run!"
Run Code Online (Sandbox Code Playgroud)

当我删除ftp代码时,它运行完美,但我不明白如何进行下一次跳转以将其转换为Microsoft SQL服务器,或者即使可以在不先保存到文件中也是如此.

python sql pyodbc pandas

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

Pandas read_sql 带有使用“in”的 where 子句

我需要使用“in”子句查询表,其中 SQL 如下所示:

select * from some_table where some_field in (?)
Run Code Online (Sandbox Code Playgroud)

我最初采取了一种天真的方法并尝试了以下方法:

in_items = [1,2,3,4]
df = pd.read_sql(MY_SQL_STATEMENT, con=con, params=[in_items]
Run Code Online (Sandbox Code Playgroud)

这不起作用,它抛出以下错误:

The SQL contains 1 parameter markers, but 4 parameters were supplied
Run Code Online (Sandbox Code Playgroud)

我陷入困境的是弄清楚如何将项目列表作为单个参数传递。

我可以采用字符串连接方法,例如:

MY_SQL = 'select * from tableA where fieldA in ({})'.format(
  ','.join([str(x) from x in list_items]))
df = pd.read_sql(MY_SQL, con=con)
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我宁愿避免这种方法。有谁知道一种将值列表作为单个参数传递的方法?

我也愿意采用一种可能更聪明的方法来做到这一点。:)

python sql-server sqlalchemy pandas

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

为什么 Pandas 和 GeoPandas 能够使用 DBAPI (psycopg2) 连接读取数据库表,但必须依赖 SQLAlchemy 来编写数据库表?

语境

我在尝试从脚本对某些数据库执行一些 I/O 操作时遇到了麻烦Python3

当我想要连接到数据库时,我习惯性地使用psycopg2to 来处理连接游标

我的数据通常存储为and/or的等效项。 Pandas DataFramesGeoPandasGeoDataFrames

困难

为了数据库表中读取数据;

使用Pandas

我可以依赖它.read_sql()作为参数的方法con,如文档中所述:

con : SQLAlchemy connectable (engine/connection) or database str URI
        or DBAPI2 connection (fallback mode)'
        Using SQLAlchemy makes it possible to use any DB supported by that
        library. If a DBAPI2 object, only sqlite3 is supported. The user is responsible
        for engine disposal and connection closure …
Run Code Online (Sandbox Code Playgroud)

sqlalchemy psycopg2 dataframe pandas geopandas

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

隐藏 pandas 警告:SQLAlchemy

我想隐藏这个警告UserWarning: pandas only support SQLAlchemy connectable(engine/connection) ordatabase string URI or sqlite3 DBAPI2 connectionother DBAPI2 objects are not tested, please consider using SQLAlchemy并且我已经尝试过

import warnings
warnings.simplefilter(action='ignore', category=UserWarning)

import pandas
Run Code Online (Sandbox Code Playgroud)

但警告仍然显示。

我的 python 脚本从数据库读取数据。我用于pandas.read_sqlSQL 查询和psycopg2数据库连接。

我还想知道哪一行触发了警告。

python postgresql pandas

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