python sqlite資料庫 建表定義的時候有8列,插入數據時想先插入前5個數據,其餘的以後再插入

sql="""insertintoMyTable
(Project_number,Year,ID,Abstract,Cost_money)
values(?,?,?,?,?)"""
...
cur.execute(sql,[project_number,year,id,abstract,money_cost])

② python 怎麼創建create mysql的資料庫

我採用的是MySQLdb操作的MYSQL資料庫。先來一個簡單的例子吧:
import MySQLdb

try:
conn=MySQLdb.connect(host='localhost',user='root',passwd='root',db='test',port=3306)
cur=conn.cursor()
cur.execute('select * from user')
cur.close()
conn.close()
except MySQLdb.Error,e:
print "Mysql Error %d: %s" % (e.args[0], e.args[1])

請注意修改你的資料庫,主機名,用戶名,密碼。
下面來大致演示一下插入數據,批量插入數據,更新數據的例子吧:
import MySQLdb

try:
conn=MySQLdb.connect(host='localhost',user='root',passwd='root',port=3306)
cur=conn.cursor()

cur.execute('create database if not exists python')
conn.select_db('python')
cur.execute('create table test(id int,info varchar(20))')

value=[1,'hi rollen']
cur.execute('insert into test values(%s,%s)',value)

values=[]
for i in range(20):
values.append((i,'hi rollen'+str(i)))

cur.executemany('insert into test values(%s,%s)',values)

cur.execute('update test set info="I am rollen" where id=3')

conn.commit()
cur.close()
conn.close()

except MySQLdb.Error,e:
print "Mysql Error %d: %s" % (e.args[0], e.args[1])

請注意一定要有conn.commit()這句來提交事務,要不然不能真正的插入數據。
運行之後我的MySQL資料庫的結果就不上圖了。
import MySQLdb

try:
conn=MySQLdb.connect(host='localhost',user='root',passwd='root',port=3306)
cur=conn.cursor()

conn.select_db('python')

count=cur.execute('select * from test')
print 'there has %s rows record' % count

result=cur.fetchone()
print result
print 'ID: %s info %s' % result

results=cur.fetchmany(5)
for r in results:
print r

print '=='*10
cur.scroll(0,mode='absolute')

results=cur.fetchall()
for r in results:
print r[1]

conn.commit()
cur.close()
conn.close()

except MySQLdb.Error,e:
print "Mysql Error %d: %s" % (e.args[0], e.args[1])

運行結果就不貼了,太長了。
查詢後中文會正確顯示,但在資料庫中卻是亂碼的。經過我從網上查找,發現用一個屬性有可搞定:
在Python代碼
conn = MySQLdb.Connect(host='localhost', user='root', passwd='root', db='python') 中加一個屬性:
改為:
conn = MySQLdb.Connect(host='localhost', user='root', passwd='root', db='python',charset='utf8')
charset是要跟你資料庫的編碼一樣,如果是資料庫是gb2312 ,則寫charset='gb2312'。

下面貼一下常用的函數:
然後,這個連接對象也提供了對事務操作的支持,標準的方法
commit() 提交
rollback() 回滾
cursor用來執行命令的方法:
callproc(self, procname, args):用來執行存儲過程,接收的參數為存儲過程名和參數列表,返回值為受影響的行數
execute(self, query, args):執行單條sql語句,接收的參數為sql語句本身和使用的參數列表,返回值為受影響的行數
executemany(self, query, args):執行單挑sql語句,但是重復執行參數列表裡的參數,返回值為受影響的行數
nextset(self):移動到下一個結果集

cursor用來接收返回值的方法:
fetchall(self):接收全部的返回結果行.
fetchmany(self, size=None):接收size條返回結果行.如果size的值大於返回的結果行的數量,則會返回cursor.arraysize條數據.
fetchone(self):返回一條結果行.
scroll(self, value, mode='relative'):移動指針到某一行.如果mode='relative',則表示從當前所在行移動value條,如果 mode='absolute',則表示從結果集的第一行移動value條.
參考資料:
MySQLdb『s user guide
package MySQLdb

③ 求助用python從資料庫取數據動態生成表格的方法

一、可使用的第三方庫
python中處理excel表格,常用的庫有xlrd(讀excel)表、xlwt(寫excel)表、openpyxl(可讀寫表)等。xlrd讀數據較大的excel表時效率高於openpyxl,所以我在寫腳本時就採用了xlrd和xlwt這兩個庫。介紹及下載地址為:http://www.python-excel.org/ 這些庫文件都沒有提供修改現有excel表格內容的功能。一般只能將原excel中的內容讀出、做完處理後,再寫入一個新的excel文件。
二、常見問題
使用python處理excel表格時,發現兩個個比較難纏的問題:unicode編碼和excel中記錄的時間。
因為python的默認字元編碼都為unicode,所以列印從excel中讀出的中文或讀取中文名的excel表或sheet時,程序提示錯誤UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)。這是由於在windows中,中文使用了gb2312編碼方式,python將其當作unicode和ascii來解碼都不正確才報出的錯誤。使用VAR.encode('gb2312')即可解決列印中文的問題。(很奇怪,有的時候雖然能列印出結果,但顯示的不是中文,而是一堆編碼。)若要從中文文件名的excel表中讀取數據,可在文件名前加『u』表示將該中文文件名採用unicode編碼。
有excel中,時間和日期都使用浮點數表示。可看到,當『2013年3月20日』所在單元格使用『常規』格式表示後,內容變為『41353』;當其單元格格式改變為日期後,內容又變為了『2013年3月20日』。而使用xlrd讀出excel中的日期和時間後,得到是的一個浮點數。所以當向excel中寫入的日期和時間為一個浮點數也不要緊,只需將表格的表示方式改為日期和時間,即可得到正常的表示方式。excel中,用浮點數1表示1899年12月31日。
三、常用函數
以下主要介紹xlrd、xlwt、datetime中與日期相關的函數。

import xlrd
import xlwt
from datetime

def testXlrd(filename):
book=xlrd.open_workbook(filename)
sh=book.sheet_by_index(0)
print "Worksheet name(s): ",book.sheet_names()[0]
print 'book.nsheets',book.nsheets
print 'sh.name:',sh.name,'sh.nrows:',sh.nrows,'sh.ncols:',sh.ncols
print 'A1:',sh.cell_value(rowx=0,colx=1)
#如果A3的內容為中文
print 'A2:',sh.cell_value(0,2).encode('gb2312')

def testXlwt(filename):
book=xlwt.Workbook()
sheet1=book.add_sheet('hello')
book.add_sheet('word')
sheet1.write(0,0,'hello')
sheet1.write(0,1,'world')
row1 = sheet1.row(1)
row1.write(0,'A2')
row1.write(1,'B2')

sheet1.col(0).width = 10000

sheet2 = book.get_sheet(1)
sheet2.row(0).write(0,'Sheet 2 A1')
sheet2.row(0).write(1,'Sheet 2 B1')
sheet2.flush_row_data()

sheet2.write(1,0,'Sheet 2 A3')
sheet2.col(0).width = 5000
sheet2.col(0).hidden = True

book.save(filename)

if __name__=='__main__':
testXlrd(u'你好。xls')
testXlwt('helloWord.xls')
base=datetime.date(1899,12,31).toordinal()
tmp=datetime.date(2013,07,16).toordinal()
print datetime.date.fromordinal(tmp+base-1).weekday()

④ python django models創建mysql資料庫表default、blank屬性失效

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

在db/backends/creation.py中找到如下欄位:

iff.primary_key:
field_output.append(style.SQL_KEYWORD('PRIMARYKEY'))eliff.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)))

⑤ python3如何根據csv文件的列的內容,自動建資料庫表

你好,csv格式的和excel格式的都是差不多的,
下面是讀取excel的一些函數,希望幫到你:
# -*- coding: cp936 -*-
import xlrd3
def getallrowsbysheetindex(sheetindex, xlsfilepath):
workbook = xlrd3.open_workbook(xlsfilepath)
table = workbook.sheets()[sheetindex]
rows = []
rownum = table.nrows # 總共行數
rowlist = table.row_values
for i in range(rownum):
rows.append(rowlist(i)) # 等價於rows.append(i, rowlists(i))
return rows
def getrow(sheetindex, rowindex, xlsfilepath):
rows = getallrowsbysheetindex(sheetindex, xlsfilepath)
return rows[rowindex]
def getallcolsbysheetindex(sheetindex, xlsfilepath):
workbook = xlrd3.open_workbook(xlsfilepath)
table = workbook.sheets()[sheetindex]
cols = []
colnum = table.ncols # 總共列數
collist = table.col_values
for i in range(colnum):
cols.append(collist(i))
return cols
def getcol(sheetindex, colindex, xlsfilepath):
cols = getallcolsbysheetindex(sheetindex, xlsfilepath)
return cols[colindex]
def getcellvalue(sheetindex, rowindex, colindex, xlsfilepath):
workbook = xlrd3.open_workbook(xlsfilepath)
table = workbook.sheets()[sheetindex]
return table.cell(rowindex, colindex).value # 或者table.row(0)[0].value或者table.col(0)[0].value
if __name__=='__main__':
rowsinfirstsheet = getallrowsbysheetindex(0, './產品.xls')
print(rowsinfirstsheet)
colsinfirstsheet = getallcolsbysheetindex(0, './產品.xls')
print(colsinfirstsheet)
print(getrow(0, 0, './產品.xls')) # 獲取第一個sheet第一行的數據
print(getcol(0, 0, './產品.xls')) # 獲取第一個sheet第一列的數據
print(getcellvalue(0, 3, 2, './產品.xls')) # 獲取第一個sheet第四行第二列的單元格的值

⑥ 如何在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 <mole>
import MySQLdb
ImportError: No mole 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)。一個事務的執行不能被其他事務干擾。即一個事務內部的操作及使用的數據對並發的其他事務是隔離的,並發執行的各個事務之間不能互相干擾。
持久性(rability)。持續性也稱永久性(permanence),指一個事務一旦提交,它對資料庫中數據的改變就應該是永久性的。接下來的其他操作或故障不應該對其有任何影響。

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

⑦ python Django創建mysql資料庫表結構報錯

1.
建立一個project
2.
創建第一個頁面
3.
創建一個app
4.
然後給app增加一個頁面
4.1
在setting裡面配置:
在my_project的url中添加
在app1的urls中添加
創建views
然後
就可以通過127.0.0.1:8000 訪問了
5.
配置資料庫
在setting中修改database信息
check看是否連接上資料庫
在我的workbench中可以看到生成了默認的table
接下來我們自己建立model (需要繼承models.Model)
運行命令
然後再運行
可以發現table創建完畢
接下來對資料庫進行操作
我先在mysql中插入2條數據
查看發現數據已經成功插入
然後我們
修改model讓其返回name,修改views讓其在頁面上顯示返回的結果
運行之後可以看到結果
---------------------

⑧ 搭建 python djingo 必須要建的資料庫表

資料庫表不需要自己建的,python會有腳本自己去建的。
首先設置資料庫連接。用編輯器打開settings.py,修改DATABASES變數下default中的設置(DATABASES = { 'default': { 'ENGINE': 'django.db.backends.oracle', 'NAME': 'XE', 'USER': 'PLAT', 'PASSWORD': 'PLAT', 'HOST': '', 'PORT': '', } })。其中user和password是我在資料庫中新建的用戶名及其密碼。host和port使用本地及默認埠,所以留空字元串即可。

然後執行一下python manage.py syncdb 命令,在資料庫中,創建Django組件所需要的數據表。

如果你真的想知道有什麼表,可以看一下manage.py腳本或者看一下資料庫就知道了。

⑨ Python連接MySQL創建資料庫創建表插入數據在程序裡面也可以查詢出來插入的數據,但是在資料庫里表為空

因為你插入數據沒有commit、在程序裡面也可以查詢出來插入的數據是從緩存中查的。

⑩ python中我想用SQLAlchemy操作models.py在資料庫創建表和欄位

這是一個導入錯誤,你自己的程序里沒有"db"這個類。