python數據庫無法建表(數據庫中無法創建表)

本文目錄一覽:

python sqlite3 建表問題

import sqlite3cx = sqlite3.connect(“E:/test.db”)cx.execute(“create table …”)#建表cx.execute(“insert into …”)#插入數據cx.commit()

掌握Python 操作 MySQL 數據庫

本文Python 操作 MySQL 數據庫需要是使用到 PyMySQL 驅動

Python 操作 MySQL 前提是要安裝好 MySQL 數據庫並能正常連接使用,安裝步驟詳見下文。

注意: 安裝過程我們需要通過開啟管理員權限來安裝,否則會由於權限不足導致無法安裝。

首先需要先下載 MySQL 安裝包, 官網下載地址 下載對應版本即可,或直接在網上拉取並安裝:

權限設置:

初始化 MySQL:

啟動 MySQL:

查看 MySQL 運行狀態:

Mysql安裝成功後,默認的root用戶密碼為空,你可以使用以下命令來創建root用戶的密碼:

登陸:

創建數據庫:

查看數據庫:

PyMySQL 模塊使用 pip命令進行安裝:

假如系統不支持 pip 命令,可以使用以下方式安裝:

pymysql .connect 函數:連接上數據庫

輸出結果顯示如下:表面數據庫連接成功

使用 pymysql 的 connect() 方法連接數據庫,connect 參數解釋如下:

conn.cursor():獲取游標

如果要操作數據庫,光連接數據是不夠的,咱們必須拿到操作數據庫的游標,才能進行後續的操作,游標的主要作用是用來接收數據庫操作後的返回結果,比如讀取數據、添加數據。通過獲取到的數據庫連接實例 conn 下的 cursor() 方法來創建游標,實例如下:

輸出結果為:

cursor 返回一個游標實例對象,其中包含了很多操作數據的方法,如執行sql語句,sql 執行命令: execute() 和 executemany()

execute(query,args=None):

executemany(query,args=None):

其他游標對象如下表:

完整數據庫連接操作實例如下:

以上結果輸出為:

創建表代碼如下:

如下所示數據庫表創建成功:

插入數據實現代碼:

插入數據結果:

Python查詢Mysql使用 fetchone() 方法獲取單條數據, 使用fetchall() 方法獲取多條數據。

查詢數據代碼如下:

輸出結果:

DB API中定義了一些數據庫操作的錯誤及異常,下表列出了這些錯誤和異常:

本文給大家介紹 Python 如何連接 Mysql 進行數據的增刪改查操作,文章通過簡潔的代碼方式進行示例演示,給使用 Python 操作 Mysql 的工程師提供支撐。

python 連接mysql數據庫,存儲過程內創建臨時表,查詢不到數據

Python是編程語言,MySQL是數據庫,它們是兩種不同的技術;要想使Python操作MySQL數據庫需要使用驅動。這裡選用PyMySQL驅動。

當然,最簡單的安裝方式還是使用pip命令。

pip install PyMySQL

把install 換成show命令,查看PyMySQL安裝是否成功。

如何在python中進行數據庫的添加

你可以訪問Python數據庫接口及API查看詳細的支持數據庫列表。不同的數據庫你需要下載不同的DB API模塊,例如你需要訪問Oracle數據庫和Mysql數據,你需要下載Oracle和MySQL數據庫模塊。

DB-API 是一個規範. 它定義了一系列必須的對象和數據庫存取方式, 以便為各種各樣的底層數據庫系統和多種多樣的數據庫接口程序提供一致的訪問接口 。

Python的DB-API,為大多數的數據庫實現了接口,使用它連接各數據庫後,就可以用相同的方式操作各數據庫。

Python DB-API使用流程:

引入 API 模塊。

獲取與數據庫的連接。

執行SQL語句和存儲過程。

關閉數據庫連接。

什麼是MySQLdb?

MySQLdb 是用於Python鏈接Mysql數據庫的接口,它實現了 Python 數據庫 API 規範 V2.0,基於 MySQL C API 上建立的。

如何安裝MySQLdb?

為了用DB-API編寫MySQL腳本,必須確保已經安裝了MySQL。複製以下代碼,並執行:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

import MySQLdb

如果執行後的輸出結果如下所示,意味着你沒有安裝 MySQLdb 模塊:

Traceback (most recent call last):

File “test.py”, line 3, in module

import MySQLdb

ImportError: No module named MySQLdb

安裝MySQLdb,請訪問 ,(Linux平台可以訪問:)從這裡可選擇適合您的平台的安裝包,分為預編譯的二進制文件和源代碼安裝包。

如果您選擇二進制文件發行版本的話,安裝過程基本安裝提示即可完成。如果從源代碼進行安裝的話,則需要切換到MySQLdb發行版本的頂級目錄,並鍵入下列命令:

$ gunzip MySQL-python-1.2.2.tar.gz

$ tar -xvf MySQL-python-1.2.2.tar

$ cd MySQL-python-1.2.2

$ python setup.py build

$ python setup.py install

注意:請確保您有root權限來安裝上述模塊。

數據庫連接

連接數據庫前,請先確認以下事項:

您已經創建了數據庫 TESTDB.

在TESTDB數據庫中您已經創建了表 EMPLOYEE

EMPLOYEE表字段為 FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME。

連接數據庫TESTDB使用的用戶名為 “testuser” ,密碼為 “test123”,你可以可以自己設定或者直接使用root用戶名及其密碼,Mysql數據庫用戶授權請使用Grant命令。

在你的機子上已經安裝了 Python MySQLdb 模塊。

如果您對sql語句不熟悉,可以訪問我們的 SQL基礎教程

實例:

以下實例鏈接Mysql的TESTDB數據庫:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

import MySQLdb

# 打開數據庫連接

db = MySQLdb.connect(“localhost”,”testuser”,”test123″,”TESTDB” )

# 使用cursor()方法獲取操作游標

cursor = db.cursor()

# 使用execute方法執行SQL語句

cursor.execute(“SELECT VERSION()”)

# 使用 fetchone() 方法獲取一條數據庫。

data = cursor.fetchone()

print “Database version : %s ” % data

# 關閉數據庫連接

db.close()

執行以上腳本輸出結果如下:

Database version : 5.0.45

創建數據庫表

如果數據庫連接存在我們可以使用execute()方法來為數據庫創建表,如下所示創建表EMPLOYEE:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

import MySQLdb

# 打開數據庫連接

db = MySQLdb.connect(“localhost”,”testuser”,”test123″,”TESTDB” )

# 使用cursor()方法獲取操作游標

cursor = db.cursor()

# 如果數據表已經存在使用 execute() 方法刪除表。

cursor.execute(“DROP TABLE IF EXISTS EMPLOYEE”)

# 創建數據表SQL語句

sql = “””CREATE TABLE EMPLOYEE (

FIRST_NAME CHAR(20) NOT NULL,

LAST_NAME CHAR(20),

AGE INT,

SEX CHAR(1),

INCOME FLOAT )”””

cursor.execute(sql)

# 關閉數據庫連接

db.close()

數據庫插入操作

以下實例使用執行 SQL INSERT 語句向表 EMPLOYEE 插入記錄:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

import MySQLdb

# 打開數據庫連接

db = MySQLdb.connect(“localhost”,”testuser”,”test123″,”TESTDB” )

# 使用cursor()方法獲取操作游標

cursor = db.cursor()

# SQL 插入語句

sql = “””INSERT INTO EMPLOYEE(FIRST_NAME,

LAST_NAME, AGE, SEX, INCOME)

VALUES (‘Mac’, ‘Mohan’, 20, ‘M’, 2000)”””

try:

# 執行sql語句

cursor.execute(sql)

# 提交到數據庫執行

db.commit()

except:

# Rollback in case there is any error

db.rollback()

# 關閉數據庫連接

db.close()

以上例子也可以寫成如下形式:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

import MySQLdb

# 打開數據庫連接

db = MySQLdb.connect(“localhost”,”testuser”,”test123″,”TESTDB” )

# 使用cursor()方法獲取操作游標

cursor = db.cursor()

# SQL 插入語句

sql = “INSERT INTO EMPLOYEE(FIRST_NAME, \

LAST_NAME, AGE, SEX, INCOME) \

VALUES (‘%s’, ‘%s’, ‘%d’, ‘%c’, ‘%d’ )” % \

(‘Mac’, ‘Mohan’, 20, ‘M’, 2000)

try:

# 執行sql語句

cursor.execute(sql)

# 提交到數據庫執行

db.commit()

except:

# 發生錯誤時回滾

db.rollback()

# 關閉數據庫連接

db.close()

實例:

以下代碼使用變量向SQL語句中傳遞參數:

…………………………….

user_id = “test123”

password = “password”

con.execute(‘insert into Login values(“%s”, “%s”)’ % \

(user_id, password))

…………………………….

數據庫查詢操作

Python查詢Mysql使用 fetchone() 方法獲取單條數據, 使用fetchall() 方法獲取多條數據。

fetchone(): 該方法獲取下一個查詢結果集。結果集是一個對象

fetchall():接收全部的返回結果行.

rowcount: 這是一個只讀屬性,並返回執行execute()方法後影響的行數。

實例:

查詢EMPLOYEE表中salary(工資)字段大於1000的所有數據:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

import MySQLdb

# 打開數據庫連接

db = MySQLdb.connect(“localhost”,”testuser”,”test123″,”TESTDB” )

# 使用cursor()方法獲取操作游標

cursor = db.cursor()

# SQL 查詢語句

sql = “SELECT * FROM EMPLOYEE \

WHERE INCOME ‘%d'” % (1000)

try:

# 執行SQL語句

cursor.execute(sql)

# 獲取所有記錄列表

results = cursor.fetchall()

for row in results:

fname = row[0]

lname = row[1]

age = row[2]

sex = row[3]

income = row[4]

# 打印結果

print “fname=%s,lname=%s,age=%d,sex=%s,income=%d” % \

(fname, lname, age, sex, income )

except:

print “Error: unable to fecth data”

# 關閉數據庫連接

db.close()

以上腳本執行結果如下:

fname=Mac, lname=Mohan, age=20, sex=M, income=2000

數據庫更新操作

更新操作用於更新數據表的的數據,以下實例將 TESTDB表中的 SEX 字段全部修改為 ‘M’,AGE 字段遞增1:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

import MySQLdb

# 打開數據庫連接

db = MySQLdb.connect(“localhost”,”testuser”,”test123″,”TESTDB” )

# 使用cursor()方法獲取操作游標

cursor = db.cursor()

# SQL 更新語句

sql = “UPDATE EMPLOYEE SET AGE = AGE + 1

WHERE SEX = ‘%c'” % (‘M’)

try:

# 執行SQL語句

cursor.execute(sql)

# 提交到數據庫執行

db.commit()

except:

# 發生錯誤時回滾

db.rollback()

# 關閉數據庫連接

db.close()

刪除操作

刪除操作用於刪除數據表中的數據,以下實例演示了刪除數據表 EMPLOYEE 中 AGE 大於 20 的所有數據:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

import MySQLdb

# 打開數據庫連接

db = MySQLdb.connect(“localhost”,”testuser”,”test123″,”TESTDB” )

# 使用cursor()方法獲取操作游標

cursor = db.cursor()

# SQL 刪除語句

sql = “DELETE FROM EMPLOYEE WHERE AGE ‘%d'” % (20)

try:

# 執行SQL語句

cursor.execute(sql)

# 提交修改

db.commit()

except:

# 發生錯誤時回滾

db.rollback()

# 關閉連接

db.close()

執行事務

事務機制可以確保數據一致性。

事務應該具有4個屬性:原子性、一致性、隔離性、持久性。這四個屬性通常稱為ACID特性。

原子性(atomicity)。一個事務是一個不可分割的工作單位,事務中包括的諸操作要麼都做,要麼都不做。

一致性(consistency)。事務必須是使數據庫從一個一致性狀態變到另一個一致性狀態。一致性與原子性是密切相關的。

隔離性(isolation)。一個事務的執行不能被其他事務干擾。即一個事務內部的操作及使用的數據對並發的其他事務是隔離的,並發執行的各個事務之間不能互相干擾。

持久性(durability)。持續性也稱永久性(permanence),指一個事務一旦提交,它對數據庫中數據的改變就應該是永久性的。接下來的其他操作或故障不應該對其有任何影響。

Python DB API 2.0 的事務提供了兩個方法 commit 或 rollback。

python django models創建mysql數據庫表default、blank屬性失效

default屬性只在Django的ORM模型中有效,不會真正映射到數據庫里。要設置數據表的DEFAULT屬性,你可以手動修改makemigrations生成的腳本,或者去修改Django本身。

在db/backends/creation.py中找到如下字段:

if f.primary_key:

    field_output.append(style.SQL_KEYWORD(‘PRIMARY KEY’))elif f.unique:

    field_output.append(style.SQL_KEYWORD(‘UNIQUE’))

在之後加上:

if(f.default != models.fields.NOT_PROVIDED):

    field_output.append(style.SQL_KEYWORD(‘DEFAULT ‘ + str(f.default)))

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/308749.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-03 14:49
下一篇 2025-01-03 14:49

相關推薦

  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29

發表回復

登錄後才能評論