执行操作
dari test_platform. peralatan. login_api impor db
db. buat_semua()
from flask import Flask from flask_restful import Resource, Api from flask_sqlalchemy import SQLAlchemy from flask_jwt_extended import JWTManager, create_access_token, jwt_required app = Flask(__name__) api = Api(app) app.config[ 'SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://lnz:123456/platform_python' db = SQLAlchemy(app) app.config['JWT_SECRET_KEY'] = 'ceshiren' # Change this! jwt = JWTManager(app) class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True, nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) def __repr__(self): return '<User %r>' % self.username sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on 'lnz' ([Errno 11001] getaddrinfo failed)") (Background on this error at: //sqlalche.me/e/13/e3q8)代码
解决方案
修改这行代码为如下
app.config[ 'SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://lnz:123456@127.0.0.1:3306/platform_python'在使用Python连接数据库时,使用import pymysql 运行代码时报错,使用import mysql. connector 时就能连接数据库打印数据。不知道怎么解决,上网查了各种办法都没有解决,哪位大神指点一下。
1. 使用import pymysql 时代码及错误如下:
# 连接数据库 import pymysql db = pymysql.connect( host='localhost ', user='root', password='root', db='test', port=3306, charset='utf8' ) # 使用cursor()方法创建一个游标对象 cursor = db.cursor() # 使用execute()方法执行SQL语句 cursor.execute("SELECT * FROM test") # 使用fetall()获取全部数据 data = cursor.fetchall() # 打印获取到的数据 print(data) # 关闭游标和数据库的连接 cursor.close() db.close()
Pertama, unduh database
Enter password: ********
Code language: SQL (Structured Query Language) (sql)_6 berikut, buka kompresi file dan salin ke folder sepertiEnter password: ********
Code language: SQL (Structured Query Language) (sql)7Unduh Basis Data Sampel MySQL Python
Selanjutnya, login ke MySQL Server menggunakan
Enter password: ********
Code language: SQL (Structured Query Language) (sql)8 toolmysql -u root -p
Code language: SQL (Structured Query Language) (sql)Masukkan kata sandi untuk
Enter password: ********
Code language: SQL (Structured Query Language) (sql)_9 penggunaEnter password: ********
Code language: SQL (Structured Query Language) (sql)_Kemudian, buat database baru bernama
Enter password: ********
Code language: SQL (Structured Query Language) (sql)6mysql>create database python_mysql;
Code language: SQL (Structured Query Language) (sql)Setelah itu, pilih database
Enter password: ********
mysql>use python_mysql;
Code language: SQL (Structured Query Language) (sql)Terakhir, gunakan perintah ini untuk memuat data dari file
mysql> source c:\mysql\python_mysql.sql
Code language: SQL (Structured Query Language) (sql)Untuk memeriksa ulang pemuatan, gunakan perintah
mysql>create database python_mysql;
Code language: SQL (Structured Query Language) (sql)2 untuk membuat daftar semua tabel dari databaseEnter password: ********
Code language: SQL (Structured Query Language) (sql)6mysql> SHOW TABLES;
Code language: SQL (Structured Query Language) (sql)Outputnya akan
+------------------------+ | Tables_in_python_mysql | +------------------------+ | authors | | book_author | | books | +------------------------+ 3 rows in set (0.01 sec)
Code language: JavaScript (javascript)Menghubungkan ke database MySQL menggunakan fungsi
mysql>create database python_mysql;
Code language: SQL (Structured Query Language) (sql)4Mari kita lihat modul Python berikut (
mysql>create database python_mysql;
Code language: SQL (Structured Query Language) (sql)5 )import mysql.connector from mysql.connector import Error def connect(): """ Connect to MySQL database """ conn = None try: conn = mysql.connector.connect(host='localhost', database='python_mysql', user='root', password='SecurePass1!') if conn.is_connected(): print('Connected to MySQL database') except Error as e: print(e) finally: if conn is not None and conn.is_connected(): conn.close() if __name__ == '__main__': connect()
Code language: Python (python)Mari kita periksa modul ini secara detail
- Pertama, impor objek
mysql>create database python_mysql;
Code language: SQL (Structured Query Language) (sql)_6 danmysql>create database python_mysql;
Code language: SQL (Structured Query Language) (sql)7 dari paket MySQL Connector/Python - Kedua, gunakan fungsi
mysql>create database python_mysql;
Code language: SQL (Structured Query Language) (sql)_4 untuk terhubung ke MySQL Server. Fungsimysql>create database python_mysql;
Code language: SQL (Structured Query Language) (sql)_4 menerima empat parameter. host, basis data, pengguna, dan kata sandi. Fungsimysql>create database python_mysql;
Code language: SQL (Structured Query Language) (sql)4 membuat koneksi ke databaseEnter password: ********
Code language: SQL (Structured Query Language) (sql)6 dan mengembalikan objekmysql>use python_mysql;
Code language: SQL (Structured Query Language) (sql)2 - Ketiga, periksa apakah koneksi ke database MySQL telah berhasil dibuat menggunakan metode
mysql>use python_mysql;
mysql>use python_mysql;
Code language: SQL (Structured Query Language) (sql)4 menangani pengecualian dan menampilkan kesalahan - Keempat, tutup koneksi database menggunakan metode
mysql>use python_mysql;
Code language: SQL (Structured Query Language) (sql)5 dari objekmysql>use python_mysql;
Code language: SQL (Structured Query Language) (sql)2
Untuk menguji modul
mysql>create database python_mysql;
Code language: SQL (Structured Query Language) (sql)5, gunakan perintah berikut>python connect.py Connected to MySQL database
Code language: CSS (css)Jika nama pengguna atau kata sandi tidak valid, Anda akan mendapatkan kesalahan berikut
1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Code language: JavaScript (javascript)Jika Server MySQL tidak tersedia, Anda akan mendapatkan kesalahan berikut
Enter password: ********
Code language: SQL (Structured Query Language) (sql)_0Perhatikan bahwa, dalam contoh ini, kami mengkodekan konfigurasi database seperti
mysql>use python_mysql;
Code language: SQL (Structured Query Language) (sql)8 ,Enter password: ********
Code language: SQL (Structured Query Language) (sql)6 ,Enter password: ********
Code language: SQL (Structured Query Language) (sql)9 , di dalam kode, Ini bukan praktik yang baik jadi mari kita perbaiki kode dengan menggunakan file konfigurasi databaseMenghubungkan ke Database MySQL menggunakan objek
mysql>use python_mysql;
Code language: SQL (Structured Query Language) (sql)2Pertama, buat file konfigurasi database bernama
mysql> source c:\mysql\python_mysql.sql
Code language: SQL (Structured Query Language) (sql)2 dan tentukan bagian dengan empat parameter sebagai berikutEnter password: ********
Code language: SQL (Structured Query Language) (sql)_1Kedua, buat modul baru bernama
mysql> source c:\mysql\python_mysql.sql
Code language: SQL (Structured Query Language) (sql)3 yang membaca konfigurasi database dari filemysql> source c:\mysql\python_mysql.sql
Code language: SQL (Structured Query Language) (sql)2 dan mengembalikan objek kamusEnter password: ********
Code language: SQL (Structured Query Language) (sql)_2Perhatikan bahwa kami menggunakan paket
mysql> source c:\mysql\python_mysql.sql
Mari kita uji modul ini di REPL
Enter password: ********
Code language: SQL (Structured Query Language) (sql)_3Ini berfungsi seperti yang diharapkan
Ketiga, buat modul baru
mysql> source c:\mysql\python_mysql.sql
Code language: SQL (Structured Query Language) (sql)_6 yang menggunakan objekmysql>use python_mysql;
Code language: SQL (Structured Query Language) (sql)2 untuk terhubung ke databaseEnter password: ********
Code language: SQL (Structured Query Language) (sql)6Enter password: ********
Code language: SQL (Structured Query Language) (sql)_4Mari kita periksa modul secara lebih rinci
- Pertama, impor objek yang diperlukan termasuk
mysql>use python_mysql;
Code language: SQL (Structured Query Language) (sql)_2 ,mysql>create database python_mysql;
Code language: SQL (Structured Query Language) (sql)7 dari MySQL Connector/paket Python danmysql> SHOW TABLES;
Code language: SQL (Structured Query Language) (sql)1 dari modulmysql> SHOW TABLES;
Code language: SQL (Structured Query Language) (sql)2 - Kedua, baca konfigurasi database dan berikan untuk membuat instance baru dari objek
mysql>use python_mysql;
Code language: SQL (Structured Query Language) (sql)2 di fungsimysql>create database python_mysql;
Code language: SQL (Structured Query Language) (sql)4. Kode lainnya berfungsi mirip dengan contoh pertama
Berikut adalah pengujian modul
mysql> SHOW TABLES;
Code language: SQL (Structured Query Language) (sql)5Enter password: ********
Code language: SQL (Structured Query Language) (sql)_5Dalam tutorial ini, Anda telah mempelajari cara terhubung ke database menggunakan fungsi
mysql>create database python_mysql;
Code language: SQL (Structured Query Language) (sql)4 dan objekmysql>use python_mysql;
Code language: SQL (Structured Query Language) (sql)2. Kedua cara tersebut memiliki efek yang sama yaitu membuat koneksi ke database MySQL