python操作mysql一共有兩種方式,第一種是用原生模組pymysql和mysqldb,這兩種模組在py2中都支援,但是在py3中只支援pymysql,但是pymysql可以通過pymysql.install_as_mysqldb()的方式構造成和mysqldb一樣的使用;第二種方式是orm框架 sqlachemy。
pip install pymysql
import pymysql# 增,刪,改除了sql語句不同,使用的方式一致
conn = pymysql.connect(host="
localhost
",user='
root
',password='',database="
db2"
) #連線mysql
cursor =conn.cursor() #建立游標
sql = "
insert into userinfo(username,password) values(%s,%s)
" #sql語句
#r表示執行這條語句受影響的行數r =cursor.execute(sql ,['wusir','123'])
#r = cursor.executemany(sql ,[('jack','213'),('tom','234')]) #表示插入多條資料,只有在插入資料的時候才使用executemany
conn.commit() #增刪改執行一定要加conn.commit()cursor.close() #關閉游標
conn.close() #關閉連線
# 查寫乙個很簡單的基於mysql的登入程式,資料庫裡面只有乙個user為alex,pwd為123,當使用第一種寫法時會出現mysql注入的情況。conn = pymysql.connect(host="
localhost
",user='
root
',password='',database="
db2"
)# cursor = conn.cursor(cursor=pymysql.cursors.dictcursor) #使用這種游標查出來的資料是列表套子典
cursor = conn.cursor() #使用這種游標查出來的資料是元祖套元祖
sql = "
select * from userinfo
"cursor.execute(sql)
#cursor.scroll(
1,mode='
relative
') # 讓游標相對當前位置移動
#cursor.scroll(
2,mode='
absolute
') # 讓游標相對絕對位置移動
#result =cursor.fetchone() # 取乙個資料
#print(result)
#result = cursor.fetchmany(4
) #取指定數目的資料
#print(result)
result = cursor.fetchall() #取查出來的所有資料
print(result)
cursor.close()
conn.close()
#ps:每取乙個資料游標就會向下移動一位
# 新插入資料的自增id: cursor.lastrowid
# 如當有乙個主從表時,從表要根據主表的id變化來插入資料,這時可以使用cursor.lastrowid來獲取最新插入的主表id。
import pymysqluser = input('
>>請輸入使用者名稱:')
pwd = input('
>>請輸入密碼:')
conn = pymysql.connect(host='
127.0.0.1
',user='
root
',password='',database='
db2'
)cursor =conn.cursor()
#第一種寫法(不可以)
sql = "
select * from userinfo where name='%s' and pwd='%s'
"%(user,pwd)
cursor.execute(sql)
res =cursor.fetchone()
print(res)
#第二種寫法(可以)
sql = "select * from userinfo where name=%s and pwd=%s"
cursor.execute(sql,[user,pwd])
res = cursor.fetchone()
print(res)
#第三種寫法(可以)sql = "select * from userinfo where name=%(u)s and pwd=%(p)s"
cursor.execute(sql,)
res = cursor.fetchone()
print(res)
ifres:
print(
'登陸成功')
else
: print(
'登陸失敗
這就是mysql注入,因為mysql中的注釋是--,使用這種字串拼接會將後面的語句注釋掉,同時1=1成立,這樣就會出現即使沒有這個使用者也會登入成功。
mysql資料庫之python鏈結mysql
使用之前請在命令列pip install pymysql import pymysql 1.建立鏈結 conn pymysql.connect host 127.0.0.1 ip位址 port 3306,埠號 database database name 資料庫名稱 user mysql usern...
Python學習之資料庫操作
在python中,我們可以通過mysqldb這一介面卡連線並運算元據庫。其中有兩個主要的物件connection和cursor,分別用來與資料庫連線和通訊。下面給出乙個與資料庫連線的例項 conn mysqldb.connect host 127.0.0.1 主機名 127.0.0.1 為本機ip ...
python之資料庫操作 sqlite
關於sqlite 不像常見的客戶端 伺服器結構範例,sqlite引擎不是個程式與之通訊的獨立程序,而是連線到程式中成為它的乙個主要部分。所以主要的通訊協議是在程式語言內的直接api呼叫。這在消耗總量 延遲時間和整體簡單性上有積極的作用。整個資料庫 定義 表 索引和資料本身 都在宿主主機上儲存在乙個單...