Hướng dẫn dataframe to mysql table python - dataframe thành python bảng mysql

từ SQLalchemy nhập tạo_Engine

Nhập PYMYSQL

nhập khẩu gấu trúc dưới dạng PD

uservitals = {"userid": ["xxxxx", "yyyyy", "zzzzz", "aaaaa", "bbbbb", "ccccc", "ddddd"],

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; "Người dùng"

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; "Hàng tháng

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; "HighStorderAmount": [30, 20, 16, 23, 20, 26, 9],

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; "LastorderAmount": [21,20,4,11,7,7,7],

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; "LastorderRating": [3,3,3,2,3,2,4],

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; "trung bình

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; "OrderMode": ["Web", "Ứng dụng", "Ứng dụng", "Ứng dụng", "Web", "Web", "Ứng dụng"],

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; "InmedicalCare": ["Không", "Không", "Không", "Không", "Có", "Không", "Không"]};

TableName & nbsp; & nbsp; = "Uservitals"

DataFrame & nbsp; & nbsp; = pd.dataFrame (data = uservitals) & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

sqlengine & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; = created_engine ('mysql+pymysql: // root:@127.0.0.1/test', pool_recycle = 3600)

dbconnection & nbsp; & nbsp; & nbsp; = sqlengine.connect ()

try:

& nbsp; & nbsp; & nbsp; khung & nbsp; & nbsp; & nbsp; & nbsp; = dataFrame.to_sql (tablename, dbconnection, if_exist = 'fail');

ngoại trừ valueError là vx:

& nbsp; & nbsp; & nbsp; in (VX)

ngoại trừ ngoại lệ là Ex: & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; & nbsp; in (ví dụ)

else:

& nbsp; & nbsp; & nbsp; in ("Bảng %s được tạo thành công." %tablename); & nbsp; & nbsp; & nbsp;

finally:

& nbsp; & nbsp; & nbsp; dbconnection.close ()

Andy Hayden đã đề cập đến chức năng chính xác (

   feature1  feature2  class
0  0.548814  0.791725      1
1  0.715189  0.528895      0
2  0.602763  0.568045      0
3  0.544883  0.925597      0
4  0.423655  0.071036      0
5  0.645894  0.087129      0
6  0.437587  0.020218      0
7  0.891773  0.832620      1
8  0.963663  0.778157      0
9  0.383442  0.870012      0
0). Trong câu trả lời này, tôi sẽ đưa ra một ví dụ hoàn chỉnh, mà tôi đã thử nghiệm với Python 3.5 nhưng cũng nên làm việc cho Python 2.7 (và Python 3.x):

Đầu tiên, hãy tạo DataFrame:

# Create dataframe
import pandas as pd
import numpy as np

np.random.seed(0)
number_of_samples = 10
frame = pd.DataFrame({
    'feature1': np.random.random(number_of_samples),
    'feature2': np.random.random(number_of_samples),
    'class':    np.random.binomial(2, 0.1, size=number_of_samples),
    },columns=['feature1','feature2','class'])

print(frame)

Mà mang lại:

   feature1  feature2  class
0  0.548814  0.791725      1
1  0.715189  0.528895      0
2  0.602763  0.568045      0
3  0.544883  0.925597      0
4  0.423655  0.071036      0
5  0.645894  0.087129      0
6  0.437587  0.020218      0
7  0.891773  0.832620      1
8  0.963663  0.778157      0
9  0.383442  0.870012      0

Để nhập DataFrame này vào bảng MySQL:

# Import dataframe into MySQL
import sqlalchemy
database_username = 'ENTER USERNAME'
database_password = 'ENTER USERNAME PASSWORD'
database_ip       = 'ENTER DATABASE IP'
database_name     = 'ENTER DATABASE NAME'
database_connection = sqlalchemy.create_engine('mysql+mysqlconnector://{0}:{1}@{2}/{3}'.
                                               format(database_username, database_password, 
                                                      database_ip, database_name))
frame.to_sql(con=database_connection, name='table_name_for_df', if_exists='replace')

Một mẹo là MySQLDB không hoạt động với Python 3.x. Vì vậy, thay vào đó chúng tôi sử dụng

   feature1  feature2  class
0  0.548814  0.791725      1
1  0.715189  0.528895      0
2  0.602763  0.568045      0
3  0.544883  0.925597      0
4  0.423655  0.071036      0
5  0.645894  0.087129      0
6  0.437587  0.020218      0
7  0.891773  0.832620      1
8  0.963663  0.778157      0
9  0.383442  0.870012      0
1, có thể được cài đặt như sau:

pip install mysql-connector==2.1.4  # version avoids Protobuf error

Output:

Hướng dẫn dataframe to mysql table python - dataframe thành python bảng mysql

Lưu ý rằng

   feature1  feature2  class
0  0.548814  0.791725      1
1  0.715189  0.528895      0
2  0.602763  0.568045      0
3  0.544883  0.925597      0
4  0.423655  0.071036      0
5  0.645894  0.087129      0
6  0.437587  0.020218      0
7  0.891773  0.832620      1
8  0.963663  0.778157      0
9  0.383442  0.870012      0
0 tạo bảng cũng như các cột nếu chúng chưa tồn tại trong cơ sở dữ liệu.

Pandas hiện là một trong những thư viện Python phổ biến nhất được sử dụng để phân tích dữ liệu. Một khung dữ liệu trong gấu trúc là một cấu trúc dữ liệu để lưu trữ dữ liệu ở dạng bảng, tức là, theo hàng và cột. Bài viết này mô tả cách viết dữ liệu trong một bản dữ liệu gấu trúc vào bảng MySQL.

Hãy xem xét một khung dữ liệu với ba bản ghi như dưới đây.

Hướng dẫn dataframe to mysql table python - dataframe thành python bảng mysql

Bạn có thể tạo một bảng cơ sở dữ liệu trong MySQL và chèn dữ liệu này bằng hàm to_sql () trong gấu trúc. Hàm

   feature1  feature2  class
0  0.548814  0.791725      1
1  0.715189  0.528895      0
2  0.602763  0.568045      0
3  0.544883  0.925597      0
4  0.423655  0.071036      0
5  0.645894  0.087129      0
6  0.437587  0.020218      0
7  0.891773  0.832620      1
8  0.963663  0.778157      0
9  0.383442  0.870012      0
3 yêu cầu hai tham số bắt buộc - tên bảng và đối tượng động cơ sqlalchemy.to_sql() function in Pandas. The
   feature1  feature2  class
0  0.548814  0.791725      1
1  0.715189  0.528895      0
2  0.602763  0.568045      0
3  0.544883  0.925597      0
4  0.423655  0.071036      0
5  0.645894  0.087129      0
6  0.437587  0.020218      0
7  0.891773  0.832620      1
8  0.963663  0.778157      0
9  0.383442  0.870012      0
3 function requires two mandatory parameters - table name and an SQLAlchemy engine object.

SQLalchemy là một bộ công cụ Python và Mapper quan hệ đối tượng (ORM) cho phép Python hoạt động với cơ sở dữ liệu SQL. Một động cơ là cơ sở của bất kỳ ứng dụng sqlalchemy nào nói chuyện với cơ sở dữ liệu. Đối tượng động cơ được tạo bằng cách gọi hàm create_engine () với phương ngữ cơ sở dữ liệu và tham số kết nối. is a Python toolkit and Object Relational Mapper (ORM) that allows Python to work with SQL Databases. An engine is the base of any SQLAlchemy application that talks to the database. The engine object is created by calling the create_engine() function with database dialect and connection parameters.

Chương trình Python sau đây tạo ra một bảng mới có tên

   feature1  feature2  class
0  0.548814  0.791725      1
1  0.715189  0.528895      0
2  0.602763  0.568045      0
3  0.544883  0.925597      0
4  0.423655  0.071036      0
5  0.645894  0.087129      0
6  0.437587  0.020218      0
7  0.891773  0.832620      1
8  0.963663  0.778157      0
9  0.383442  0.870012      0
4 trong cơ sở dữ liệu MySQL và điền vào bảng với ba bản ghi từ DataFrame ví dụ của chúng tôi.

import pandas as pd
from sqlalchemy import create_engine

# Credentials to database connection
hostname="localhost"
dbname="mydb_name"
uname="my_user_name"
pwd="my_password"

# Create dataframe
df = pd.DataFrame(data=[[111,'Thomas','35','United Kingdom'],
		[222,'Ben',42,'Australia'],
		[333,'Harry',28,'India']],
		columns=['id','name','age','country'])

# Create SQLAlchemy engine to connect to MySQL Database
engine = create_engine("mysql+pymysql://{user}:{pw}@{host}/{db}"
				.format(host=hostname, db=dbname, user=uname, pw=pwd))

# Convert dataframe to sql table                                   
df.to_sql('users', engine, index=False)

Sau khi thực hiện tập lệnh Python ở trên, hãy đăng nhập vào cơ sở dữ liệu MySQL của bạn và truy vấn bảng người dùng mới được tạo.

SELECT * from users;
TôiTêntuổi tácquốc gia
111 Thomas35 Vương quốc Anh
222 Ben42 Châu Úc
333 Harry28 Ấn Độ

Bây giờ chúng ta hãy xem xét một số tham số tùy chọn có thể được chuyển đến hàm

   feature1  feature2  class
0  0.548814  0.791725      1
1  0.715189  0.528895      0
2  0.602763  0.568045      0
3  0.544883  0.925597      0
4  0.423655  0.071036      0
5  0.645894  0.087129      0
6  0.437587  0.020218      0
7  0.891773  0.832620      1
8  0.963663  0.778157      0
9  0.383442  0.870012      0
3.

  • Chỉ mục: Đúng hoặc sai. Mặc định là đúng. : True or False. Default is True.

    Nếu tham số chỉ mục trong hàm TO_SQL được đặt thành TRUE (index = true) hoặc nếu tham số chỉ mục bị bỏ qua thì chỉ mục của DataFrame được thêm làm cột đầu tiên trong bảng cơ sở dữ liệu MySQL. Nếu bạn không muốn chỉ mục thì hãy đặt

       feature1  feature2  class
    0  0.548814  0.791725      1
    1  0.715189  0.528895      0
    2  0.602763  0.568045      0
    3  0.544883  0.925597      0
    4  0.423655  0.071036      0
    5  0.645894  0.087129      0
    6  0.437587  0.020218      0
    7  0.891773  0.832620      1
    8  0.963663  0.778157      0
    9  0.383442  0.870012      0
    
    6

  • Index_Label: Chuỗi. Mặc định là không có. : string. Default is None.

    Khi index = true, chỉ mục của DataFrame được bao gồm trong bảng trong chỉ mục tên cột. Bạn có thể có một tên cột khác cho cột chỉ mục bằng cách đặt giá trị chuỗi thành tham số index_label. Ví dụ

    df.to_sql('users', engine, index=True, index_label="RowNum")
  • if_exists: thất bại, thay thế, nối. Mặc định là thất bại : fail, replace, append. Default is fail

    Tham số này quyết định phải làm gì nếu bảng đã tồn tại trong cơ sở dữ liệu. Bởi Dafault, một lỗi được nêu ra nếu bảng tồn tại. Nếu bạn đặt tham số này thành

       feature1  feature2  class
    0  0.548814  0.791725      1
    1  0.715189  0.528895      0
    2  0.602763  0.568045      0
    3  0.544883  0.925597      0
    4  0.423655  0.071036      0
    5  0.645894  0.087129      0
    6  0.437587  0.020218      0
    7  0.891773  0.832620      1
    8  0.963663  0.778157      0
    9  0.383442  0.870012      0
    
    7 thì bảng hiện tại được bỏ trước khi chèn các giá trị. Nếu được đặt thành
       feature1  feature2  class
    0  0.548814  0.791725      1
    1  0.715189  0.528895      0
    2  0.602763  0.568045      0
    3  0.544883  0.925597      0
    4  0.423655  0.071036      0
    5  0.645894  0.087129      0
    6  0.437587  0.020218      0
    7  0.891773  0.832620      1
    8  0.963663  0.778157      0
    9  0.383442  0.870012      0
    
    8 thì các giá trị trong DataFrame sẽ được thêm vào bảng hiện có.

  • DTYPE: Từ điển : dictionary

    Tham số

       feature1  feature2  class
    0  0.548814  0.791725      1
    1  0.715189  0.528895      0
    2  0.602763  0.568045      0
    3  0.544883  0.925597      0
    4  0.423655  0.071036      0
    5  0.645894  0.087129      0
    6  0.437587  0.020218      0
    7  0.891773  0.832620      1
    8  0.963663  0.778157      0
    9  0.383442  0.870012      0
    
    9 cho phép bạn chỉ định loại dữ liệu của các cột bảng là đối tượng từ điển. Các khóa trong từ điển là tên cột và giá trị có thể là một trong những loại dữ liệu SQLalchemy. Ví dụ

    from sqlalchemy.types import String, Integer
    df.to_sql('users', engine, dtype={"age": Integer(), "name": String(30)})
    

    Cuộc gọi chức năng

       feature1  feature2  class
    0  0.548814  0.791725      1
    1  0.715189  0.528895      0
    2  0.602763  0.568045      0
    3  0.544883  0.925597      0
    4  0.423655  0.071036      0
    5  0.645894  0.087129      0
    6  0.437587  0.020218      0
    7  0.891773  0.832620      1
    8  0.963663  0.778157      0
    9  0.383442  0.870012      0
    
    3 ở trên tạo bảng
       feature1  feature2  class
    0  0.548814  0.791725      1
    1  0.715189  0.528895      0
    2  0.602763  0.568045      0
    3  0.544883  0.925597      0
    4  0.423655  0.071036      0
    5  0.645894  0.087129      0
    6  0.437587  0.020218      0
    7  0.891773  0.832620      1
    8  0.963663  0.778157      0
    9  0.383442  0.870012      0
    
    4 với cột
    # Import dataframe into MySQL
    import sqlalchemy
    database_username = 'ENTER USERNAME'
    database_password = 'ENTER USERNAME PASSWORD'
    database_ip       = 'ENTER DATABASE IP'
    database_name     = 'ENTER DATABASE NAME'
    database_connection = sqlalchemy.create_engine('mysql+mysqlconnector://{0}:{1}@{2}/{3}'.
                                                   format(database_username, database_password, 
                                                          database_ip, database_name))
    frame.to_sql(con=database_connection, name='table_name_for_df', if_exists='replace')
    
    2 được đặt là loại
    # Import dataframe into MySQL
    import sqlalchemy
    database_username = 'ENTER USERNAME'
    database_password = 'ENTER USERNAME PASSWORD'
    database_ip       = 'ENTER DATABASE IP'
    database_name     = 'ENTER DATABASE NAME'
    database_connection = sqlalchemy.create_engine('mysql+mysqlconnector://{0}:{1}@{2}/{3}'.
                                                   format(database_username, database_password, 
                                                          database_ip, database_name))
    frame.to_sql(con=database_connection, name='table_name_for_df', if_exists='replace')
    
    3 và
    # Import dataframe into MySQL
    import sqlalchemy
    database_username = 'ENTER USERNAME'
    database_password = 'ENTER USERNAME PASSWORD'
    database_ip       = 'ENTER DATABASE IP'
    database_name     = 'ENTER DATABASE NAME'
    database_connection = sqlalchemy.create_engine('mysql+mysqlconnector://{0}:{1}@{2}/{3}'.
                                                   format(database_username, database_password, 
                                                          database_ip, database_name))
    frame.to_sql(con=database_connection, name='table_name_for_df', if_exists='replace')
    
    4 là
    # Import dataframe into MySQL
    import sqlalchemy
    database_username = 'ENTER USERNAME'
    database_password = 'ENTER USERNAME PASSWORD'
    database_ip       = 'ENTER DATABASE IP'
    database_name     = 'ENTER DATABASE NAME'
    database_connection = sqlalchemy.create_engine('mysql+mysqlconnector://{0}:{1}@{2}/{3}'.
                                                   format(database_username, database_password, 
                                                          database_ip, database_name))
    frame.to_sql(con=database_connection, name='table_name_for_df', if_exists='replace')
    
    5

    Các cột trong bảng người dùng

    index bigint(20) 
    id bigint(20) 
    name varchar(30) 
    age int(11) 
    country text
    

Thêm khóa chính

Hàm to_sql () không cung cấp bất kỳ tùy chọn nào để tạo cột khóa chính. Tuy nhiên, bạn có thể đạt được điều này bằng cách gọi phương pháp .Execute của động cơ SQLalchemy..execute method of SQLAlchemy engine.

Câu lệnh sau đây đặt cột

# Import dataframe into MySQL
import sqlalchemy
database_username = 'ENTER USERNAME'
database_password = 'ENTER USERNAME PASSWORD'
database_ip       = 'ENTER DATABASE IP'
database_name     = 'ENTER DATABASE NAME'
database_connection = sqlalchemy.create_engine('mysql+mysqlconnector://{0}:{1}@{2}/{3}'.
                                               format(database_username, database_password, 
                                                      database_ip, database_name))
frame.to_sql(con=database_connection, name='table_name_for_df', if_exists='replace')
6 trong bảng người dùng làm khóa chính.

engine.execute('ALTER TABLE users ADD PRIMARY KEY (`id`);')

Làm cách nào để tạo DataFrame vào bảng trong MySQL bằng Python?

Tạo một khung dữ liệu bằng cách gọi Trình xây dựng DataFrame của Pandas và chuyển đối tượng Python Dict dưới dạng dữ liệu. Gọi phương thức_sql () trên thể hiện gấu trúc DataFrame và chỉ định kết nối tên và kết nối cơ sở dữ liệu bảng. Điều này tạo ra một bảng trong máy chủ cơ sở dữ liệu MySQL và điền vào dữ liệu từ DataFrame của Pandas.

Làm cách nào để thêm DataFrame vào bảng SQL?

Trong bài viết này..
Prerequisites..
Cài đặt các gói Python ..
Tạo một tệp CSV mẫu ..
Tạo một bảng cơ sở dữ liệu mới ..
Tải DataFrame từ tệp CSV ..
Xác nhận dữ liệu trong cơ sở dữ liệu ..
Bước tiếp theo..

Làm cách nào để viết gấu trúc DataFrame cho SQL?

Các bước để đi từ gấu trúc DataFrame đến SQL..
Bước 1: Tạo DataFrame.Để bắt đầu, hãy tạo một khung dữ liệu dựa trên dữ liệu sau về sản phẩm: ....
Bước 2: Tạo cơ sở dữ liệu.Đối với mục đích trình diễn, hãy tạo một cơ sở dữ liệu đơn giản bằng SQLite3.....
Bước 3: Nhận từ Pandas DataFrame đến SQL ..

Tôi có thể kết nối Python với cơ sở dữ liệu MySQL không?

Python cần một trình điều khiển MySQL để truy cập cơ sở dữ liệu MySQL.Trong hướng dẫn này, chúng tôi sẽ sử dụng trình điều khiển "Đầu nối MySQL".Chúng tôi khuyên bạn nên sử dụng PIP để cài đặt "Đầu nối MySQL".PIP rất có thể đã được cài đặt trong môi trường Python của bạn.. In this tutorial we will use the driver "MySQL Connector". We recommend that you use PIP to install "MySQL Connector". PIP is most likely already installed in your Python environment.