Bỏ qua nội dung chính
Trình duyệt này không còn được hỗ trợ.
Nâng cấp lên Microsoft Edge để tận dụng các tính năng mới nhất, cập nhật bảo mật và hỗ trợ kỹ thuật.
Chèn dữ liệu từ bảng SQL vào khung dữ liệu python
- Bài báo
- 01/11/2022
- 2 phút để đọc
Trong bài viết này
Áp dụng cho: SQL Server [tất cả các phiên bản được hỗ trợ] Cơ sở dữ liệu Azure SQL Azure SQL được quản lý
Bài viết này mô tả cách chèn dữ liệu SQL vào khung dữ liệu gấu trúc bằng cách sử dụng gói pyodbc trong Python. Các hàng và cột của dữ liệu có trong DataFrame có thể được sử dụng để khám phá dữ liệu tiếp theo.
Điều kiện tiên quyết
- SQL Server cho Windows hoặc cho Linux
- Cơ sở dữ liệu Azure SQL
Azure SQL được quản lý
SQL Server Management Studio để khôi phục cơ sở dữ liệu mẫu cho phiên bản được quản lý của Azure SQL.
Azure Data Studio. Để cài đặt, xem Azure Data Studio.
Khôi phục cơ sở dữ liệu mẫu để nhận dữ liệu mẫu được sử dụng trong bài viết này.
Xác minh cơ sở dữ liệu được khôi phục
Bạn có thể xác minh rằng cơ sở dữ liệu được khôi phục tồn tại bằng cách truy vấn người.Person.CountryRegion table:
USE AdventureWorks;
SELECT * FROM Person.CountryRegion;
Cài đặt các gói Python
Tải xuống và cài đặt Azure Data Studio.
Cài đặt các gói Python sau:
- Pyodbc
- gấu trúc
Để cài đặt các gói này:
- Trong máy tính xách tay Azure Data Studio của bạn, chọn Quản lý gói.Manage Packages.
- Trong ngăn Quản lý gói, chọn Tab Thêm mới.Manage Packages pane, select the Add new tab.
- Đối với mỗi gói sau, nhập tên gói, nhấp vào Tìm kiếm, sau đó nhấp vào Cài đặt.Search, then click Install.
Chèn dữ liệu
Sử dụng tập lệnh sau để chọn dữ liệu từ bảng. Chỉnh sửa các biến chuỗi kết nối: 'Máy chủ', 'cơ sở dữ liệu', 'Tên người dùng' và 'Mật khẩu' để kết nối với SQL.
Để tạo một cuốn sổ mới:
- Trong Azure Data Studio, chọn Tệp, chọn Notebook mới.File, select New Notebook.
- Trong sổ ghi chép, chọn Kernel Python3, chọn mã +.Python3, select the +code.
- Mã Dán trong Notebook, chọn Chạy tất cả.Run All.
import pyodbc
import pandas as pd
# Some other example server values are
# server = 'localhost\sqlexpress' # for a named instance
# server = 'myserver,port' # to specify an alternate port
server = 'servername'
database = 'AdventureWorks'
username = 'yourusername'
password = 'databasename'
cnxn = pyodbc.connect['DRIVER={SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password]
cursor = cnxn.cursor[]
# select 26 rows from SQL table to insert in dataframe.
query = "SELECT [CountryRegionCode], [Name] FROM Person.CountryRegion;"
df = pd.read_sql[query, cnxn]
print[df.head[26]]
Đầu ra
Lệnh print
trong tập lệnh trước hiển thị các hàng dữ liệu từ pandas
DataFrame df
.
CountryRegionCode Name
0 AF Afghanistan
1 AL Albania
2 DZ Algeria
3 AS American Samoa
4 AD Andorra
5 AO Angola
6 AI Anguilla
7 AQ Antarctica
8 AG Antigua and Barbuda
9 AR Argentina
10 AM Armenia
11 AW Aruba
12 AU Australia
13 AT Austria
14 AZ Azerbaijan
15 BS Bahamas, The
16 BH Bahrain
17 BD Bangladesh
18 BB Barbados
19 BY Belarus
20 BE Belgium
21 BZ Belize
22 BJ Benin
23 BM Bermuda
24 BT Bhutan
25 BO Bolivia
Bước tiếp theo
- Chèn Python DataFrame vào SQL
Nhận xét
Gửi và xem phản hồi cho
Tôi đang cố gắng hiểu làm thế nào Python có thể lấy dữ liệu từ máy chủ FTP vào gấu trúc sau đó di chuyển nó vào máy chủ SQL.Mã của tôi ở đây rất thô sơ để nói rằng ít nhất và tôi đang tìm kiếm bất kỳ lời khuyên hoặc sự giúp đỡ nào.Tôi đã cố gắng tải dữ liệu từ máy chủ FTP trước hoạt động tốt .... Nếu sau đó tôi xóa mã này và thay đổi nó thành một chọn từ máy chủ MS SQL thì tốt để chuỗi kết nối hoạt động, nhưng việc chèn vào SQLMáy chủ dường như đang gây ra vấn đề.
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!"
Khi tôi xóa mã FTP, điều này sẽ chạy hoàn hảo, nhưng tôi không hiểu làm thế nào để thực hiện bước nhảy tiếp theo để đưa nó vào Microsoft SQL Server hoặc ngay cả khi có thể mà không lưu vào tệp trước.